Shell中的迴圈

2021-07-14 06:12:30 字數 2622 閱讀 8583

工作中,我們經常會有重複進行某乙個動作的需求。有的需求是知道重複某個操作多少次,有的是不知道需要重複多少次。所以我們需要根據不同的需求來判斷到底需要使用哪種迴圈控制語句,主要包含:for迴圈, while迴圈, until迴圈。以下一次進行說明。

一.until迴圈

until迴圈主要寫法如下,說明:當condition不滿足時會執行,當condition為真時停止迴圈,往往用於不知道到底需要執行多少次

until condition ; do
commands
done

二.while迴圈

while迴圈同until迴圈一樣,用於不可預知迴圈次數的情況下使用。主要用於condition滿足的情況下進行執行:
while condition
do

commands
done

案例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=$random

[ $x -le 20000 ] && continue ##當隨機數小於等於20000時重新開始新的迴圈

echo "n=$n x=$x"

done

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...