Shell中循環(huán)控制
在編寫Shell腳本時(shí),循環(huán)是一個(gè)非常常見的結(jié)構(gòu)。有時(shí)候,在循環(huán)過程中我們需要滿足某些條件時(shí)強(qiáng)制跳出循環(huán)或者只是跳過當(dāng)前循環(huán)。和大多數(shù)編程語言類似,Shell也提供了break和continue兩個(gè)命
在編寫Shell腳本時(shí),循環(huán)是一個(gè)非常常見的結(jié)構(gòu)。有時(shí)候,在循環(huán)過程中我們需要滿足某些條件時(shí)強(qiáng)制跳出循環(huán)或者只是跳過當(dāng)前循環(huán)。和大多數(shù)編程語言類似,Shell也提供了break和continue兩個(gè)命令來實(shí)現(xiàn)這些功能。
使用break命令跳出循環(huán)
break命令允許我們跳出所有循環(huán),終止執(zhí)行后面的所有循環(huán)。下面是一個(gè)例子,當(dāng)用戶輸入的數(shù)字大于5時(shí),腳本將進(jìn)入死循環(huán),要跳出這個(gè)循環(huán)并返回到Shell提示符下,我們可以使用break命令。
```Shell
#!/bin/bash
while :
do
echo -n "請(qǐng)輸入一個(gè)1到5之間的數(shù)字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字是$aNum!"
;;
*) echo "你沒有選擇1到5之間的數(shù)字, 游戲結(jié)束!"
break
;;
esac
done
```
在嵌套循環(huán)中使用break命令
在嵌套循環(huán)中,break命令后面可以跟一個(gè)整數(shù),表示跳出第幾層循環(huán)。下面是一個(gè)嵌套循環(huán)的例子,當(dāng)變量var1等于2并且變量var2等于0時(shí),就跳出循環(huán)。
```Shell
#!/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
```
使用continue命令跳過當(dāng)前循環(huán)
continue命令與break命令類似,它可以讓我們跳過當(dāng)前循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。與break命令不同的是,continue命令只會(huì)跳出當(dāng)前循環(huán),而不會(huì)跳出所有循環(huán)。下面是一個(gè)例子,當(dāng)輸入的數(shù)字不在1到5之間時(shí),我們將跳過打印提示,并繼續(xù)進(jìn)行下一次循環(huán)。
```Shell
#!/bin/bash
while :
do
echo -n "請(qǐng)輸入一個(gè)1到5之間的數(shù)字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字是$aNum!"
;;
*) echo "你沒有選擇1到5之間的數(shù)字!"
continue
echo "游戲結(jié)束!"
;;
esac
done
```
同時(shí)使用break和continue命令
在某些情況下,我們可能需要同時(shí)使用break和continue命令。下面是一個(gè)例子,當(dāng)輸入的數(shù)字不在1到5或6到10之間時(shí),我們將跳出循環(huán)并打印游戲結(jié)束。
```Shell
#!/bin/bash
while :
do
echo -n "請(qǐng)輸入一個(gè)1到5或6到10之間的數(shù)字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字是$aNum!"
;;
6|7|8|9|10) echo "你輸入的數(shù)字是$aNum!"
;;
*) echo "你沒有選擇1到10之間的數(shù)字!"
echo "游戲結(jié)束!"
break
;;
esac
done
```
通過使用這些循環(huán)控制命令,我們可以更好地控制Shell腳本中的循環(huán)流程,使代碼更加靈活和高效。