Shell shell中的迴圈語句

2021-09-02 17:39:07 字數 1965 閱讀 2874

for語法格式

for var in list;do

commands

done

其中list可以包含:

1) 直接寫

for alpha in a b c d;do

echo $alpha

done

2)變數

list="a b c d"

for alpha in $list;do

echo $alpha

done

在shell執行的時候會進行變數替換,上面的list變數替換之後,for迴圈的形式和1中的形式一模一樣。但是如果為$list加上了引號,即如果寫為下面的形式:

list="a b c d"

for alpha in "$list";do

echo $list

done

shell變數替換之後為:

list="a b c d"

for alpha in "a b c d";do

echo $list

done

這時輸出就只有一行a b c d。

3)shell命令

for alpha in `cat alpha.txt`;do

echo $alpha

done

假設alpha.txt檔案裡面的內容就是a b c d,那麼通過使用``符先將檔案內容讀出,再進行迭代,結果和1一樣

4)讀取檔案目錄

for file in $home/a/*;do

echo $file

done

上面的**先進行萬用字元glob擴充套件,假設目錄a下有2個檔案1.txt, 2.txt,乙個資料夾b,那麼經過擴充套件之後實際為:

for file in $home/a/1.txt $home/a/2.txt $home/a/b;do

echo $file

done

此時file的值依次為$home/a/1.txt,$home/a/2.txt, $home/a/b。

但是假設a不是乙個目錄,是乙個檔案,此時萬用字元擴充套件會失敗,此時file的值直接就是$home/a/*。

這裡還需要注意的乙個地方是,這裡進行的是shell glob的擴充套件,因此擴充套件的時候不能越過檔案邊界,換句歡說,如果b目錄下面還有檔案,這些檔案是無法擴充套件出來的,即擴充套件無法越過資料夾b

ifsfor迴圈當中,list的被如何分割就是由ifs決定的,預設情形下,ifs的值是:

tab空格

換行你可以重新給ifs賦值,:

ifs=: #此時分隔符為:

ifs=:; #此時分隔符為:和;

c風格的for迴圈

for (( i = 0; i < 10; i++ ));do

commands

done

這裡的風格和c中一樣,其中的變數i可以是任何變數

while 迴圈

while command;do

commands

done

其中的command可以是shell command,也可以test condition。如果command的返回值為0或者測試成立,則執行,否則不執行。

這裡需要注意的是,while可以使用多個條件,但是只有最後乙個條件起作用:

var=100

while [ $var -lt 0 ];[ $var -gt 0 ];do

echo $var

done

在這段**中,雖然第乙個條件一開始就不成立,但是起作用的是最後乙個條件,因此,這是乙個無線迴圈

until迴圈

until command;do

commnds

done

和while一樣,唯一不同的是如果command返回0,則不執行,否則就執行

shell shell指令碼實戰 for迴圈

總結前言 迴圈語句常用於重複執行一條命令或一組命令等,直到達到結束條件後,則終止執行。在shell中常見的迴圈命令有while until for和select等 今天我們來 第乙個迴圈語句,for迴圈。for迴圈介紹 for迴圈語句與while迴圈語句類似,但for迴圈語句主要用於有限次的迴圈場景...

python中的while true 迴圈語句

d mima name input 請輸入您的使用者名稱 if name in d password input 請輸入您的密碼 if password in mima print 進入系統 else print 您輸入的密碼錯誤,請重新輸入 else print 您輸入的使用者名稱不正確,請重新輸...

js中while死迴圈語句 js中的迴圈語句

js中的迴圈語句可分為三種 1.while 2.do while 3.for。while的語法為 while exp 裡的語句,然後繼續判斷exp,直到exp的結果為false為止,若exp的結果為false,則跳過這條迴圈語句,執行接下來的 需要注意的是在 裡的語句必須存在對exp的結果產生影響的...