Shell---迴圈結構

來源:互聯網
上載者:User

Shell下的迴圈結構是類C的,同樣也有for迴圈、while迴圈,此外,Shell也有until迴圈。 for迴圈 for迴圈的基本文法

for variable in {list}do    statement1    statement2    ...done

for迴圈的文法意思與C語言一樣,即執行迴圈體的次數由list決定。list在這裡是一個列表,可以是一系列的數字或字串,元素之間用空格隔開

舉例:依次列印出1~10。

1、列出list列表:

 #! /bin/bash for i in 1 2 3 4 5 6 7 8 9 10 do     echo "number is $i" done~            

2、list列表可以表示為:{1..8}

 #! /bin/bash for i in {1..8} do     echo "number is $i" done

運行結果:
改變for迴圈增長步長
上述方式的for迴圈中,變數每次只能增長1,Shell允許使用者自訂增長步長。
基本文法為:

for variable in {start..end..step}do    statement1    statement2    ...done

start表示起始值,end表示終止值,step表示增長值。

舉例:通過for迴圈輸出100以內奇數的和:

#! /bin/bashsum=0for i in {1..100..2}do    let "sum+=i";doneecho "result is : $sum"
不帶列表的for迴圈
我們先來瞭解幾個Shell中的位置參數:
$0:相當於main函數參數的argv[0]$1、$2...:稱為位置參數,相當於main函數參數的argv[1],argv[2]....$#:相當於main函數的argc-1,這裡的#不表示注釋$@:表示參數列表"$1","$2",可以用在for迴圈in的後邊$?:上一條命令的退出碼$$:當前shell的進程號

舉例:輸出每命令列的每個參數

for val in $@do    echo "$val"done

不帶列表的迴圈實現為:

for valdo    echo "$val"done

以上兩種實現方式是等效的。 類C風格的for迴圈

for ((expression1;expression2;expression3))do    statement1;    statement2;    ...done

舉例:用該中方式列印1~10

for (( i=1;i<10;i++ ))do    echo "number is $i"done
for迴圈處理數組
基本文法:
for variable in ${array[*]}do    statement1;    statement2;    ...done

舉例:列印數組內容

array=(1 2 3 4 5 6 7 8)     #這句表示定義一個數組for i in ${array[*]}do    echo $idone
while迴圈 while迴圈基本用法
基本文法:
while expressiondo    statement1    statement2    ...done

while迴圈的文法與C語言的while迴圈仍是一樣,只要條件滿足就執行。

舉例:使用while迴圈輸出1~9的平方

i=1while [ "$i" -lt 10 ]do    let "square=i*i"    echo "$i*$i=$square"    let "i+=1"done

輸出結果:
until迴圈 until迴圈的基本用法
基本文法:

until expressiondo    statement1    statement2    ...done

until迴圈與C語言中的do…while迴圈類似,即反覆執行迴圈體,直到某一條件成立則退出迴圈體。

舉例:使用until迴圈執行上述while迴圈的例子,即列印1~9的平方。

i=1until [ "$i" -gt 10 ]  #這就需要判斷i大於10時退出迴圈do    let "square=i*i"    echo "$i*$i=$square"    let "i+=1"done
使用break和continue控制迴圈 利用break控制迴圈
break的作用是立即跳出某個迴圈。

舉例:輸出5以內的乘法表

#! /bin/bashfor ((i=1;i<9;i++))do    for ((j=1;j<=i;j++))    do        let "result=$i*$j"        printf "$i * $j = $result   "    done    printf "\n"#當i變數的值為5時退出迴圈    if [ $i -eq 5 ]    then        break    fidone

輸出結果為:
利用continue控制迴圈
continue的作用是跳過當前迴圈體中該句後邊的語句,重新從迴圈體開始執行。

舉例:輸出10以內的偶數

#列印10以內的偶數for val in {1..10}do    if [[ "$val2" -eq 1 ]]    then        continue    fi    printf "$val  "doneprintf "\n"

運行結果為:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.