工作中,我們經常會有重複進行某乙個動作的需求。有的需求是知道重複某個操作多少次,有的是不知道需要重複多少次。所以我們需要根據不同的需求來判斷到底需要使用哪種迴圈控制語句,主要包含:for迴圈, while迴圈, until迴圈。以下一次進行說明。一.until迴圈
until迴圈主要寫法如下,說明:當condition不滿足時會執行,當condition為真時停止迴圈,往往用於不知道到底需要執行多少次
until condition ; do
commandsdone
二.while迴圈
while迴圈同until迴圈一樣,用於不可預知迴圈次數的情況下使用。主要用於condition滿足的情況下進行執行:
while condition
do
commandsdone
案例1:將所有的引數列印出來
while [ $# -ne 0 ]; do
echo $1
shift 1-->此命令用於將傳入引數的位置往左移動指定數字的位置,例如:傳入a、b、c,那麼他們分別在$1 $2 $3的位置,shift 1以後b就在$1的位置,c就在$2的位置,$3變空
done
案例2:要求使用者輸入介於20到10之間的數(不滿足條件則一直要求輸入)while :
doread -p "enter a number between 20 and 30: " x
case $x in
*[!0-9]*)##判定是否包含非數字的字元,如果是則繼續提示
continue
;;*)
if [ $x -lt 20 ] ; then
continue
elif [ $x -gt 30 ] ; then
continue
else
echo $x && break
fi;;
esac
done
三.for迴圈
for迴圈包含多種寫法,可以是字元組也可以是陣列等等。各個寫法說明如下:寫法一:字元組
for var in canada usa mexico
doprintf "%s\n" "$var"
done
寫法二:數字範圍(非標準寫法)
for ((n=1; n<=10; ++n))
doecho "$n"
done
四.跳出迴圈與重置迴圈
當某些時候需要在迴圈體裡面控制是否要跳出迴圈,或者重新開始迴圈(跳過後續命令)。可以通過break和continue分別實現。
break案例:
for n in a b c d e
do
while true ##迴圈開始時就指定成死迴圈
do
if [ $random -gt 20000 ] ##$random表示生成乙個隨機數
then
printf .
break 2 ##跳出while和for兩層迴圈
elif [ $random -lt 10000 ]
then
printf ''''
break ##僅跳出while迴圈
fi
done
done
continue案例:for n in
do
x=$randomdone[ $x -le 20000 ] && continue ##當隨機數小於等於20000時重新開始新的迴圈
echo "n=$n x=$x"
Shell中的迴圈
for 變數名 in 列表 do 命令1 命令2done當變數值在列表裡,for迴圈即執行依次所有命令,使用變數名訪問列表中取值。命令可為任何有效的shell命令和語句。變數名為任意單詞。in 列表 用法是可選擇,如果不用它,for迴圈使用命令列的位置引數。in 列表 可以包含替換 字串和檔名 bi...
shell中的迴圈
例如 for i 1 i 10 i do echo expr i 4 done 將1到10,依次乘以4,然後列印出來。這裡順便提一下,shell裡面表示式的計算,可以有其他形式 for i 1 i 10 i do echo i 4 done for i 1 i 10 i do echo i 4 do...
shell中的迴圈結構
shell中的迴圈結構有 for,while和until while和until的語法結構 設計思路基本一致,因此歸為一類討論 for for迴圈有兩種形態 1.列表形態,形如 for var in varlist do command 1 command n done 其思路是 用var依次讀取v...