Bash程式設計3 條件語句 一

2021-09-05 09:52:48 字數 2541 閱讀 7336

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 條件與條件間不...