Bash程式設計004 條件語句2

2021-09-05 11:17:35 字數 2024 閱讀 2256

[[ ]]是bash中的關鍵字,相當於new test,也是用於計算表示式的值,但是具有更加強大的功能。

簡單來說,test([ ])實現了老的可移植的語法特性。幾乎所有的shell總都支援它,而[[ ]]是乙個新的關鍵字(不是builtin)。在shell中[ ]和[[ ]]基本功能有很多相似之處,不同在於[[ ]]提供了更多方便使用的特性。

比如字串比較,在[ ]中 < 和 >會被解釋為重定向輸入輸出,要想使用比較的功能需要使用\轉義,而在[[ ]]可以直接使用。

[[ ]]中可以直接使用&&(條件與)和||(條件或)連線多個條件表示式。

注:這裡的&&和||也是類似於c語言中的短路求值,當第乙個表示式可以確定最終的值得時候,就不會計算第二個表示式的值。

示例:

[[ 2 > 1 && 3 > 2 ]]; echo $?

# 輸出為:0

[[ 2 > 1 && 3 > 4 ]] ; echo $?

# 輸出為:1

[[ 2 > 1 || 3 > 4 ]] ; echo $?

# 輸出為:0

另乙個微妙的區別在於[[ ]]內不存在單詞分割或者萬用字元展開,這樣在對某些變數進行判斷時就不需要用引號引用了。

舉例:

touch hello\ world.txt

var=hello\ world.txt

[ $var = "hello" ]; echo $?

#輸出結果:bash: [: 引數太多 2

[ "$var" = "hello world.txt" ]; echo $?

#輸出結果:1

[[ "$var" = "hello world.txt" ]]; echo $?

#輸出結果:1

bash中的if條件語句和一般的程式語言沒有太大區別,基本語法如下:

if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi
首先執行if中的命令,如果退出狀態為0,則這行then後的命令,然後終止;否則依次執行elif後的命令(elif 執行完後還未終止,則執行else後的命令),直到退出狀態為0,終止命令。

示例:

var="hello"

if [[ $var = "hell" ]];

then

echo "var is hell";

elif [[ $var = "world" ]]

then

echo "var is world";

elif [[ $var = "hello" ]]

then

echo "var is hello";

else

echo "var is ";

fi# 輸出結果為:var is hello

case語句專門用於處理多分支結構的情況。case採取了模式匹配處理不同的情況。

語法如下:

case exp in 

case)

commands ;;

case)

commands ;;

...

case)

commands ;;

*)commands ;;

esac

示例:

num=100ab

case $num in

[1-9]ab*)

echo "case 1";;

[1-9][1-9]ab*)

echo "case 2";;

[1-9][0-9][0-9]ab*)

echo "case 3";;

*)echo "case *";;

esac

# 輸出結果:case 3

其中方括號代表匹配其中的任一字元,連線字元表示的是兩個字元之間的所有字元(包含左右端點),*代表匹配任意長度的字串。所以,最後的*)語句代表處理剩餘的所有情況,類似於c語言中的default。

Bash程式設計3 條件語句 一

shell提供了一系列的條件測試來處理程式執行過程中的各種情況,並做進一步的操作。shell提供了一組測試運算子,通過這些運算子,shell程式能夠判斷條件是否成立。條件測試在各種流程控制語句,如判斷語句和迴圈語句中發揮著重要的作用。在shell中提供了兩個內建命令 和test用於計算條件表示式的值...

2 條件語句

python條件語句是通過一條或多條語句的執行結果 true或者false 來決定執行的 塊。python程式語言指定任何非0和非空 null 值為true,0 或者 null為false。python 程式設計中 if 語句用於控制程式的執行,基本形式為 if 判斷條件 執行語句 else 執行語...

bash(3) 條件語句 if else

if 格式 if condition then statements elif condition then statements.else statements fi和 c程式不一樣,bash的判斷不是通過boolean,而是通過statement,也就是執行命令後的最終狀態 exit statu...