shell指令碼編程迴圈之for/while/untill迴圈

來源:互聯網
上載者:User

標籤:shell bash for

迴圈執行: 將一段代碼重複執行0、1或多次;

進入條件:條件滿足時才進入迴圈;

允出準則:每個迴圈都應該有允出準則,以有機會退出迴圈;


bash指令碼:

    for迴圈

    while迴圈

    until迴圈


for迴圈:

兩種格式:

    (1) 遍曆列表

    (2) 控制變數


(1)遍曆列表:

for  VARAIBLE  in  LIST; do

    迴圈體

done



進入條件:只要列表有元素,即可進入迴圈;

允出準則:列表中的元素遍曆完成;


LISTT的產生方式:

(1) 直接給出;

(2) 整數列表

(a) {start..end}

(b) seq [start  [incremtal]] last

(3) 返回列表的命令

(4) glob 

(5) 變數引用

[email protected], $*

樣本:添加三個使用者 

#!/bin/bash#for username in user21 user22 user23; do    if id $username &> /dev/null; then        echo "$username exists."    else        useradd $username && echo "Add user $username finished."    fidone


樣本:求100以內所有正整數之和;

#!/bin/bash#declare -i sum=0for i in {1..100}; do    echo "\$sum is $sum, \$i is $i"    sum=$[$sum+$i]doneecho $sum


樣本:判斷/var/log目錄下的每一個檔案的內容類型

#!/bin/bash#for filename in /var/log/*; do    if [ -f $filename ]; then        echo "Common file."    elif [ -d $filename ]; then        echo "Directory."    elif [ -L $filename ]; then        echo "Symbolic link."    elif [ -b $filename ]; then        echo "block special file."    elif [ -c $filename ]; then        echo "character special file."    elif [ -S $filename ]; then        echo "Socket file."    else        echo "Unkown."    fidone

for迴圈格式:

for  VARAIBLE  in  LIST; do

    迴圈體

done

for迴圈實現9*9乘法表

#!/bin/bash#for j in {1..9}; do    for i in $(seq 1 $j); do        echo -n -e "${i}X${j}=$[${i}*${j}]\t"    done    echo done



while迴圈:

while  CONDITION; do

    迴圈體

    迴圈控制變數修正運算式

done


進入條件:CONDITION測試為”真“

允出準則:CONDITION測試為”假“

樣本:求100以內所有正整數之和;

#!/bin/bash#declare -i sum=0declare -i i=1while [ $i -le 100 ]; do    let sum+=$i    let i++doneecho $sum


until迴圈:

until  CONDITION; do

    迴圈體

    迴圈控制變數修正運算式

done


進入條件:CONDITION測試為”假“

允出準則:CONDITION測試為”真“

樣本:求100以內所有正整數之和;

#!/bin/bash#declare -i sum=0declare -i i=1until [ $i -gt 100 ]; do    let sum+=$i    let i++doneecho $sum


while迴圈的特殊用法(遍曆檔案的行):

while  read  VARIABLE; do

    迴圈體;

done  <  /PATH/FROM/SOMEFILE

依次讀取/PATH/FROM/SOMEFILE檔案中的每一行,且將基賦值給VARIABLE變數;

樣本:找出ID號為偶數的使用者,顯示其使用者名稱、ID及預設shell;

#!/bin/bash#while read line; do    userid=$(echo $line | cut -d: -f3)    username=$(echo $line | cut -d: -f1)    usershell=$(echo $line | cut -d: -f7)    if [ $[$userid%2] -eq 0 ]; then        echo "$username, $userid, $usershell."    fidone < /etc/passwd

for迴圈的特殊用法:

for  ((控制變數初始化;條件判斷運算式;控制變數的修正語句)); do

迴圈體

done

控制變數初始化:僅在迴圈代碼開始運行時執行一次;

控制變數的修正語句:每輪迴圈結束會先進行控制變數修正運算,而後再做條件判斷;

樣本:求100以內所有正整數之和

#!/bin/bash#declare -i sum=0for ((i=1;i<=100;i++)); do    let sum+=$idoneecho "Sum: $sum."


樣本:列印九九乘法表

#!/bin/bash#for ((j=1;j<=9;j++)); do    for ((i=1;i<=j;i++)); do        echo -e -n "${i}X${j}=$[${i}*${j}]\t"    done    echodone


本文出自 “汪立明” 部落格,請務必保留此出處http://afterdawn.blog.51cto.com/7503144/1916005

shell指令碼編程迴圈之for/while/untill迴圈

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.