在迴圈過程中,有時候需要在未達到迴圈結束條件時強制跳出迴圈,像大多數程式語言一樣,shell也使用 break 和 continue 來跳出迴圈。
終止執行後面的所有迴圈
#!/bin/bash
while :
doecho -n "input a number between 1 to 5: "
read anum
case
$anum
in1|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
進入死迴圈直至使用者輸入數字大於5。要跳出這個迴圈。
在巢狀迴圈中,break 命令後面還可以跟乙個整數,表示跳出第幾層迴圈。例如:
break n
表示跳出第 n 層迴圈。
#!/bin/bash
for var1 in12
3dofor var2 in05
doif [ $var1
-eq2
-a$var2
-eq0 ]
then
break
2else
echo
"$var1
$var2"
fidone
done
變數var1取值為1
23迴圈,變數var2取值為0
5,var1位第一層迴圈,var2位第二層迴圈,-a表示與運算。當var1等於2,var2等於0時跳出第二層迴圈。否則輸出var1 var2。
continue命令與break命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。
#!/bin/bash
while :
doecho -n "input a number between 1 to 5: "
read anum
case
$anum
in1|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
指令碼進入while死迴圈,不斷從stdin讀取輸入並儲存到anum中,如果為123
45則直接輸出,否則continue跳過,繼續從stdin輸入。echo
"game is over!"永遠都不會執行
continue 後面也可以跟乙個數字,表示跳出第幾層迴圈。
#!/bin/bash
nums="1 2 3 4 5 6 7"
for num in
$nums
do q=`expr $num % 2`
if [ $q
-eq0 ]
then
echo
"number is an even number!!"
continue
fiecho
"found odd number"
done
變數num在列表123
4567中迴圈,如果num為偶數,則輸出number is an even number!!並繼續下次迴圈,否則輸出found odd number
第13周專案1 (3)
檔名稱 test.cpp 版本 code blocks 問題描述 定義分數的一目運算 和 分別代表分數取正和求反,將 按位取反運算子 過載為分數的求倒數運算。輸入描述 程式輸出 include include using namespace std class cfraction void simp...
第13章 物件導向程式設計 13
13.13.3 迭代器 randseq和anyiter 1.randseq from random import choice class randseq object def init self,seq self.data seq def iter self return self def nex...
13 鯰魚效應
很久以前,挪威人從深海捕撈的沙丁魚,總是還沒到達岸邊就已經口吐白沫,漁民們想了無數的辦法,想讓沙丁魚活著上岸,但都失敗了。然而,有一條漁船總能帶著活魚上岸,他們帶來的活魚自然比死魚的 貴出好幾倍。原來,他們在沙丁魚槽裡放進了鯰魚。鯰魚是沙丁魚的天敵,當魚槽裡同時放有沙丁魚和鯰魚時,鯰魚出於天性會不斷...