方括號(hào) [ ]
分支結(jié)構(gòu)是 Shell 腳本中常見(jiàn)的結(jié)構(gòu)耙饰。
分支判斷的表達(dá)式一般是放在 [
與 ]
之間。例如:
#!/usr/bin/env bash
x=${1:-3}
if [ ! $x -gt 3 ]; then
echo "${x} not gt 3"
elif [ $x -gt 3 ]; then
echo "${x} gt 3"
fi
# 判斷第一個(gè)參數(shù)(默認(rèn)3)是否大于3
在 [
]
之間,字符串比較采用:==
!=
\<
\>
硫朦,例如:
# [ ab == abc ]; echo $?
1
# [ ab \< abc ]; echo $?
0
# [ ab != abc ]; echo $?
0
在 [
]
之間,整數(shù)型的比較能采用的還有:-eq
-ne
-gt
等等的形式背镇,如:
# [ 1 -eq 1 ]; echo $?
0
test 指令:
# test 1 -eq 1; echo $?
0
邏輯判斷的與 -a 或 -o 非 !:
# [ 1 -le 0 -a 2 -ge 1 ]; echo $?
1
# [ 1 -le 2 -o 2 -ge 1 ]; echo $?
0
# [ ! 1 -le 0 -a 2 -ge 1 ]; echo $?
0
雙中括號(hào) [[ ]]:
在雙中括號(hào)里面咬展,與或表達(dá)式也可以這樣表達(dá):
# [[ 1 -le 0 && 2 -ge 1 ]]; echo $?
1
# [ 1 -le 0 ] && [ 2 -ge 1 ]; echo $?
1
# [[ 1 -le 2 || 2 -ge 1 ]]; echo $?
0
# [ 1 -le 2 ] || [ 2 -ge 1 ]; echo $?
0
雙括號(hào) (( )):
# ((1 ==1)); echo $?
0
# ((1 ==1 && 0 == 1)); echo $?
1
# ((1 ==1)) || ((0 == 1)); echo $?
0
switch
分支:
#!/usr/bin/env bash
x=${1:-""}
case ${x} in
start)
echo "start ok"
;; # 注意用雙分號(hào)結(jié)束分支
stop)
echo "stopok"
;;
restart)
echo "restart ok"
;;
*)
echo "no param"
;;
esac # 注意閉合標(biāo)簽
end.