一、if else 1. if if 語句語法格式: 寫成一行(適用於終端命令提示符): 輸出: 2. if else if else 語法格式: 3. if else-if else if else-if else 語法格式: 舉例: 輸出: if else語句經常與test命令結合使用: 輸出: ...
一、if else
1. if
if 語句語法格式:
if condition
then
command1
command2
...
commandN
fi
寫成一行(適用於終端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
輸出:
2. if else
if else 語法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
3. if else-if else
if else-if else 語法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
舉例:
輸出:
if else語句經常與test命令結合使用:
輸出:
二、for迴圈
for迴圈一般格式為:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
寫成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
順序輸出當前列表中的數字:
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
順序輸出字元串中的字元:
for str in 'This is a string'
do
echo $str
done
三、while迴圈
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
使用了 Bash let 命令,它用於執行一個或多個表達式,變數計算中不需要加上 $ 來表示變數。
while迴圈可用於讀取鍵盤信息。下麵的例子中,輸入信息被設置為變數FILM,按<Ctrl-D>結束迴圈。
echo '按下 <CTRL-D> 退出'
echo -n '輸入你最喜歡的餐廳: '
while read FILM
do
echo "是的!$FILM 是一個好吃的餐廳"
done
輸出:
四、until迴圈
until 迴圈執行一系列命令直至條件為 true 時停止。
until 迴圈與 while 迴圈在處理方式上剛好相反。
一般 while 迴圈優於 until 迴圈,但在某些時候—也只是極少數情況下,until 迴圈更加有用。
until 語法格式:
until condition
do
command
done
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
五、case
case語句為多選擇語句。可以用case語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令。case語句格式如下:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
case工作方式如上所示。取值後面必須為單詞in,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。
取值將檢測匹配的每一個模式。一旦模式匹配,則執行完匹配模式相應命令後不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。
下麵的腳本提示輸入1到4,與每一種模式進行匹配:
echo '輸入 1 到 4 之間的數字:'
echo '你輸入的數字為:'
read aNum
case $aNum in
1) echo '你選擇了 1'
;;
2) echo '你選擇了 2'
;;
3) echo '你選擇了 3'
;;
4) echo '你選擇了 4'
;;
*) echo '你沒有輸入 1 到 4 之間的數字'
;;
esac
六、跳出迴圈
break命令
break命令允許跳出所有迴圈(終止執行後面的所有迴圈)。
下麵的例子中,腳本進入死迴圈直至用戶輸入數字大於5。要跳出這個迴圈,返回到shell提示符下,需要使用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
continue命令與break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。
對上面的例子進行修改:
while :
do
echo -n "輸入 1 到 5 之間的數字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數字為 $aNum!"
;;
*) echo "你輸入的數字不是 1 到 5 之間的!"
continue
echo "游戲結束"
;;
esac
done