在迴圈過程中,有時候需要在未達到迴圈結束條件時強制跳出迴圈,像大多數程式語言一樣,shell也使用 break 和 continue 來跳出迴圈。
break命令允許跳出所有迴圈(終止執行後面的所有迴圈)。
下面的例子中,指令碼進入死迴圈直至使用者輸入數字大於5。要跳出這個迴圈,返回到shell提示符下,就要使用break命令。
#!/bin/bash
while :do
echo -n "input a number between 1 to 5: "
read anum
case $anum in
1|2|3|4|5)
echo "your number is $anum!"
;;
*) echo "you do not select a number between 1 to 5, game is over!"
break
;;
esac
done
在巢狀迴圈中,break 命令後面還可以跟乙個整數,表示跳出第幾層迴圈。例如:
break n
表示跳出第 n 層迴圈。
下面是乙個巢狀迴圈的例子,如果 var1 等於 2,並且 var2 等於 0,就跳出迴圈:
#!/bin/bash
for var1 in 1 2 3
do
for var2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ]
then
break 2
else
echo "$var1 $var2"
fi
done
done
如上,break 2 表示直接跳出外層迴圈。執行結果:
1 0
1 5
continue命令與break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出本次迴圈。
對上面的例子進行修改:
#!/bin/bash
while :do
echo -n "input a number between 1 to 5: "
read anum
case $anum in
1|2|3|4|5)
echo "your number is $anum!"
;;
*) echo "you do not select a number between 1 to 5!"
continue
echo "game is over!"
;;
esac
done
執行**發現,當輸入大於5的數字時,該例中的迴圈不會結束,語句
...
echo "game is over!"
...
永遠不會被執行。
同樣,continue 後面也可以跟乙個數字,表示跳出第幾層迴圈。
再看乙個 continue 的例子:
#!/bin/bash
nums="1 2 3 4 5 6 7"
for num in $nums
do
q=`expr $num % 2`
if [ $q -eq 0 ]
then
echo "number is an even number!!"
continue
fi
echo "found odd number"
done
執行結果:
found odd number
number is an even number!!
found odd number
number is an even number!!
found odd number
number is an even number!!
found odd number
#break與直接修改條件為不成立的區別
#!/bin/bash
count=0
while [ $count -lt 30 ];do
echo $count
((count++))
if [ $count -eq 10 ];then
break
echo "我執行了"
fidone
#!/bin/bash
count=0
while [ $count -lt 30 ];do
echo $count
((count++))
if [ $count -eq 10 ];then
count=100
echo "我執行了"
fidone
echo "我執行了"
#break與continue的區別
#!/bin/bash
count=0
while [ $count -lt 30 ];do
echo $count
((count++))
if [ $count -eq 10 ];then
continue
echo "我執行了"
fidone
流程控制(迴圈)
1.塊語句 成為乙個整體 語句1 語句2 語句 空語句 非空語句 2.程式的流程控制 順序,選擇控制,迴圈 1.迴圈執行 從上往下,逐條來執行 2.選擇控制 當達到某種條件,執行特定的指令。if switch if 邏輯條件表示式 語句 雙分支 if 表示式 條件為真 語句1 else 條件為假 語...
流程控制 for迴圈
在這關於流程控制的最後一章中,我們將看看另一種 shell 迴圈構造。for 迴圈不同於 while 和 until 迴圈,因為 在迴圈中,它提供了一種處理序列的方式。這證明在程式設計時非常有用。因此在 bash 指令碼中,for 迴圈是非常流行的構造。實現乙個 for 迴圈,很自然的,要用 for...
流程控制 迴圈
迴圈就是重複執行一些語句。這個技術使用起來非常方便,因為可以對操作重複任意多次,而無需每次都要編寫相同的 例如,下面的 計算乙個銀行賬戶在10年後的金額,假定不計算每天的利息,且該賬戶沒有其他款項的訪問 double balance 1000 double interestrate 1.05 5 i...