shell-bash之測試命令

Shell中有多種針對文件、字符串、數值的條件測試命令,用於檢查某個條件是否成立。下面分別進行講解。

三種測試的命令的表達方式

  • test,語法格式爲:test
  • [ ],語法格式爲:[ ]
  • [[ ]],語法格式爲:[[ ]]
    前兩種的條件格式一樣,可以通用,僅僅是寫法的不同。但雙中括號形式是前兩者的擴展,可以在測試語句中使用與 &&、或 ||來同時對幾種條件進行測試,而在單中括號或test中則需要利用-a和-o來表示與和或,且與或非的優先級依次遞減。

三種測試用途

一、數值測試

參數 說明
-eq 等於則爲真
-ne 不等於則爲真
-gt 大於則爲真
-ge 大於等於則爲真
-lt 小於則爲真
-le 小於等於則爲真

實例

[root@host]# a=5
[root@host]# test $a -eq 5
0
[root@host]# [ $a -gt 8 ] &&echo 0 ||echo 1
1
[root@host]# [[ $a -le 5 ]] &&echo 0 ||echo 1
0

二、字符串測試

  1. 對於字符串比較測試,務必記住無論是常量字符串還是變量應用一定一定要在兩端加雙引號.
  2. 在比較關係符兩端一定要加空格。
參數 說明
= 等於則爲真(=兩端要加空格)
!= 不等於則爲真(=兩端要加空格)
> 大於則爲真(僅用於[[ ]],加空格)
< 小等則爲真(僅用於[[ ]],加空格)
-n 字符串長度不爲0則爲真
-z 字符串爲空則爲真

實例

[root@host]# a="leon"
[root@host]# test -n "$a" &&echo 0 ||echo 1
0
[root@host]# [ "$a" = "leo" ] &&echo 0 ||echo 1
1
[root@host]# [[ "$a" > "leo" ]] &&echo 0 ||echo 1
0

三、文件測試

參數 說明
-e 文件存在則爲真
-f 文件存在,且爲普通文件則爲真
-d 文件存在,且爲目錄文件則爲真
-L 文件存在,且爲鏈接文件則爲真
-c 文件存在,且爲字符設備文件則爲真
-b 文件存在,且爲塊設備文件則爲真
-r 文件存在,且爲可讀文件則爲真
-w 文件存在,且爲可寫文件則爲真
-x 文件存在,且爲可執行文件則爲真
-s 文件存在,且爲非空文件則爲真

實例

[root@host]# a=/bin/ls
[root@host]# test -x "$a" &&sh $a
a.c   b.c   d.sh 
[root@host]# [[ -x "$a" && -s "$a" ]] &&echo0||echo1
0

作者:Leon_Geo
鏈接:https://www.jianshu.com/p/6e672b1011b9
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章