break命令是退出循環(huán)的一個(gè)簡單方法??梢杂胋reak命令來退出任意類型的循環(huán),包括 while和until循環(huán)。
有幾種情況可以使用break命令,那么到底是哪些情況下可以使用break命令呢?下面南昌網(wǎng)絡(luò)公司-百恒網(wǎng)絡(luò)就來和大家介紹一下:
1、跳出單個(gè)循環(huán)
在shell執(zhí)行break命令時(shí),它會(huì)嘗試跳出當(dāng)前正在執(zhí)行的循環(huán)。
$ cat test17
#!/bin/bash
# breaking out of a for loop
for var1 in 1 2 3 4 5 6 7 8 9 10
do
if [ $var1 -eq 5 ]
then
break
fi
echo "Iteration number: $var1"
done
echo "The for loop is completed"
$ ./test17
Iteration number: 1
Iteration number: 2
Iteration number: 3
Iteration number: 4
The for loop is completed
$
for循環(huán)通常都會(huì)遍歷列表中指定的所有值。但當(dāng)滿足if-then的條件時(shí),shell會(huì)執(zhí)行break 命令,停止for循環(huán)。
這種方法同樣適用于while和until循環(huán)。
$ cat test18
#!/bin/bash
# breaking out of a while loop
var1=1
while [ $var1 -lt 10 ]
do
if [ $var1 -eq 5 ]
then
break
fi
echo "Iteration: $var1"
var1=$[ $var1 + 1 ]
done
echo "The while loop is completed"
$ ./test18
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4
The while loop is completed
$
while循環(huán)會(huì)在if-then的條件滿足時(shí)執(zhí)行break命令,終止。
2、跳出內(nèi)部循環(huán)
在處理多個(gè)循環(huán)時(shí),break命令會(huì)自動(dòng)終止你所在的內(nèi)層的循環(huán)。
$ cat test19
#!/bin/bash
# breaking out of an inner loop
for (( a = 1; a < 4; a++ ))
do
echo "Outer loop: $a"
for (( b = 1; b < 100; b++ ))
do
if [ $b -eq 5 ]
then
break
fi
echo " Inner loop: $b"
done
done $ ./test19
Outer loop: 1
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
Outer loop: 2
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
Outer loop: 3
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
$
內(nèi)部循環(huán)里的for語句指明當(dāng)變量b等于100時(shí)停止迭代。但內(nèi)部循環(huán)的if-then語句指明當(dāng) 變量b的值等于5時(shí)執(zhí)行break命令。注意,即使內(nèi)部循環(huán)通過break命令終止了,外部循環(huán)依然 繼續(xù)執(zhí)行。
3、跳出外部循環(huán)
有時(shí)你在內(nèi)部循環(huán),但需要停止外部循環(huán)。break命令接受單個(gè)命令行參數(shù)值:
break n
其中n指定了要跳出的循環(huán)層級(jí)。默認(rèn)情況下,n為1,表明跳出的是當(dāng)前的循環(huán)。如果你將 n設(shè)為2,break命令就會(huì)停止下一級(jí)的外部循環(huán)。
$ cat test20
#!/bin/bash
# breaking out of an outer loop
for (( a = 1; a < 4; a++ ))
do
echo "Outer loop: $a"
for (( b = 1; b < 100; b++ ))
do
if [ $b -gt 4 ]
then
break 2
fi
echo " Inner loop: $b"
done
done
$ ./test20
Outer loop: 1
Inner loop: 1
Inner loop: 2
Inner loop: 3
Inner loop: 4
$
注意,當(dāng)shell執(zhí)行了break命令后,外部循環(huán)就停止了。
以上便是百恒網(wǎng)絡(luò)為大家介紹的關(guān)于shell腳本中使用break命令退出循環(huán)的幾種情況,了解更多關(guān)于shell腳本方面的知識(shí),歡迎訪問百恒網(wǎng)絡(luò),百恒網(wǎng)絡(luò)是優(yōu)秀的南昌網(wǎng)絡(luò)公司之一,精通各種網(wǎng)站建設(shè)語言方面的技術(shù),主營網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)等服務(wù),如有需要我們服務(wù)的地方,可隨時(shí)來電和我們聯(lián)系!