Shell 腳本學習筆記八:流程控制
一、 if else /// 如果else分支沒有語句執行,就不要寫這個else
1、if 語句
if condition
then
command1
command2
command3
...
fi
/// 寫成一行:
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
2、if else
if condition
then
command1
command2
...
else
command
fi
#!/bin/bash num1=100; num2=100; if test $[num1] -eq $[num2] then echo "兩個數相等"; else echo "兩個數不相等"; fi 輸出以下結果: 兩個數相等
3、if else-if else
if condition
then
command1
command2
elif condition
then
command
else
command
fi
#!/bin/bash a=10 b=20 if [ $a == $b ] then echo "a 等於 b" elif [ $a -gt $b ] then echo "a 大於 b" elif [ $a -lt $b ] then echo "a 小於 b" else echo "沒有符合的條件" fi 輸出以下結果: a 小於 b
二、for 循環
for var in item1 item2 ... itemN
do
command1
command2
...
done
/// 寫成一行
for var in item1 item2 ... itemN; do command1; command2; ... done;
#!/bin/bash for loop in 1 2 3 4 5 do echo "$loop"; done 輸出以下結果: 1 2 3 4 5 for str in "This is a string" do echo "$str"; done 輸出以下結果: This is a string
三、while 語句
while condition
do
command1
done
while [ $cnt -le 5 ] do echo $cnt let "cnt++" done echo "按下 <CTRL-D> 退出"
while循環可用於讀取鍵盤信息。下面的例子中,輸入信息被設置為變量FILM,按<Ctrl-D>結束循環
echo "按下 <CTRL-D> 退出"
echo -n "輸入你最喜歡的電影名:"
while read FILM
do
echo "是的!$FILM 是一部好電影"
done
四、無限循環
1、
while :
do
command
done
2、
while true
do
command
done
3、
for (( ; ; ))
五、until 循環
- until循環執行一系列命令直至條件為真時停止
- until循環與while循環在處理方式上剛好相反
- 條件可為任意測試條件,測試發生在循環末尾,因此循環至少執行一次
- 一般while循環優於until循環,但在某些時候—也只是極少數情況下,until循環更加有用
until condition
do
command
done
六、case
case 值 in
模式1)
command1
command2
...
;;
模式2)
command1
command2
...
;;
esac
#!/bin/bash echo "輸入 1 到 4 之間的數字" echo "你輸入的數字為:" read aNum case $aNum in 1) echo "你選擇了 1" ;; 2) echo "你選擇了 2" ;; 3) echo "你選擇了 3" ;; 4) echo "你選擇了 4" ;; esac
七、break
跳出所有循環(終止執行後面的所有循環)
while : do echo -n "請輸入 1 到 5 之間的數字:" read aNum
case $aNum in 1|2|3|4|5) echo "你輸入的數字為: $aNum" ;; *) echo "你輸入的數字不是 1 到 5 之間的!結束遊戲" break ;; esac done
八、continue
跳出本次循環
Shell 腳本學習筆記八:流程控制