shell提供了一系列的條件測試來處理程式執行過程中的各種情況,並做進一步的操作。
shell提供了一組測試運算子,通過這些運算子,shell程式能夠判斷條件是否成立。條件測試在各種流程控制語句,如判斷語句和迴圈語句中發揮著重要的作用。
在shell中提供了兩個內建命令"["和test用於計算條件表示式的值,"["和test其實是同義詞,區別在於使用"["時必須最後用"]"匹配。
簡單的示例:
var=10086
# 注意這裡[ ]兩側必須有空格
if [ $var -eq 10086 ]
then
echo var is 10086
else
echo var is not 10086
fivar=10010
if test $var -eq 10010
then
echo var is 10010
else
echo var is not 10010
fi
注意:
值得一提的是,在shell程式中,條件測試的指定條件為真時,返回值為0,否則返回非零值。這個設計剛好和c語言中的判斷相反,這主要是為了和shell程式的退出狀態一致。當shell程式執行成功後,返回0;發生錯誤,則返回非零值。
我們來驗證一下,在shell中$?是乙個特殊的系統變數,表示上一條語句執行的返回值。
var=1
test $var -eq 1; echo $?
test $var -eq 2; echo $?
執行結果如下所示:
test命令的使用
檔案操作符:
test -a file 測試檔案是否存在
test -b file 測試檔案是否是塊特殊檔案
test -c file 測試檔案是否是字元特殊檔案
test -d file 測試檔案是否是目錄
test -e file 測試檔案是否存在
test -f file 測試檔案是否存在並且是普通檔案
test -g file 測試檔案是否設定了組id
test -h file 測試檔案是否是符號鏈結
test -l file 測試檔案是否是符號鏈結
test -k file 測試檔案是否設定了sticky位
test -p file 測試檔案是否是命名管道
test -r file 測試檔案是否是對當前使用者可讀
test -s file 測試檔案是否存在且非空
test -s file 測試檔案是否是socket
test -t fd 測試fd是否在終端中開啟了
test -u file 測試檔案是否設定了使用者id
test -w file 測試檔案是否對當前使用者可寫
test -x file 測試檔案是否對當前使用者可執行
test -o file 測試檔案是否是實際由你擁有
test -g file 測試檔案是否是實際上由你所在的組擁有
test -n file 測試檔案是否在最後字詞讀取後被修改了
test file1 -nt file2 根據最後修改時間判斷file1是否比file2更新
字串操作符:
test -z string 字串是否非空
test -n string
test string1 = string2 字串是否相等
test string1 != string2 字元創是否不等
test string1 < string2 按照字母表順序,string1是否小於string2
test string1 > string2 按照字母表順序,string1是否大於string2
整數操作符:
test number1 -eq number2 是否相等
test number1 -ne number2 是否不等
test number1 -gt number2 number1是否大於number2
test number1 -lt number2 number是否小於number2
test number1 -ge number2 number1是否大於等於number2
test number1 -le number2 number是否小於等於number2
邏輯操作符:
test ! expr 對表示式取反
test expr1 -a expr2 相當於and,兩個表示式都為真則為真
test expr1 -a expr2 相當於or,有乙個表示式為真即為真
別的操作符:
test -o option shell選項option是否允許
test -v var 是否設定了shell變數var
test -r var 是否設定了shell變數var,且var是乙個名字引用
bash(3) 條件語句 if else
if 格式 if condition then statements elif condition then statements.else statements fi和 c程式不一樣,bash的判斷不是通過boolean,而是通過statement,也就是執行命令後的最終狀態 exit statu...
Bash程式設計004 條件語句2
是bash中的關鍵字,相當於new test,也是用於計算表示式的值,但是具有更加強大的功能。簡單來說,test 實現了老的可移植的語法特性。幾乎所有的shell總都支援它,而 是乙個新的關鍵字 不是builtin 在shell中 和 基本功能有很多相似之處,不同在於 提供了更多方便使用的特性。比如...
3 條件語句 迴圈語句
if語句 if 表示式1 表示式1的布林值為true則執行表示式2,表示式1的布林值為false則不執行表示式2 else if語句 else if 表示式3 該語句用在if語句或其他else if語句之後,表示滿足其前面的if 或else if 語句外如果滿足表示式3則執行表示式4 條件與條件間不...