Shell中的迴圈語句for、while、until執行個體講解_linux shell

來源:互聯網
上載者:User

在程式設計語言中,迴圈語句是最基本的文法之一,在Shell(這裡是Bash)中也不例外,再把以前自己寫過的相關內容整理一下吧。

這裡包括for/while/until迴圈,以及變數自增的文法執行個體。

Shell(以Bash為例)中的迴圈語句一般有for、while、until這幾種,偶爾還有寫錯文法的時候,這裡結合執行個體來自己總結一下。也為今後使用提供一個快捷的資料擷取渠道。

一、for迴圈語句

執行個體1.1 最基本的for迴圈: (傳統的形式,for var in …)

複製代碼 代碼如下:

#!/bin/bash
for x in one two three four
do
        echo number $x
done

註:”for” 迴圈總是接收 “in” 語句之後的某種類型的字列表。在本例中,指定了四個英語單詞,但是字列表也可以引用磁碟上的檔案,甚至檔案萬用字元。
執行個體1.2 對目錄中的檔案做for迴圈
複製代碼 代碼如下:

#!/bin/bash
for x in /var/log/*
do
        #echo "$x is a file living in /var/log"
        echo $(basename $x) is a file living in /var/log
done

註:這個$x獲得的是絕對路徑檔案名稱;可以使用 “basename” 可執行程式來除去前面的路徑資訊。如果只引用當前工作目錄中的檔案(例如,如果輸入 “for x in *”),則產生的檔案清單將沒有路徑資訊的首碼。
執行個體1.3 對位置參數做for迴圈
複製代碼 代碼如下:

#!/bin/bash
for thing in "$@"
do
        echo you typed ${thing}.
done

執行個體1.4 for迴圈中用seq產生迴圈次數,加上C語言形式的for迴圈語句
複製代碼 代碼如下:

#!/bin/bash
echo "for: Traditional form: for var in ..."
for j in $(seq 1 5)
do
        echo $j
done

echo "for: C language form: for (( exp1; exp2; exp3 ))"

for (( i=1; i<=5; i++ ))
do
        echo "i=$i"
done

註:對於固定次數的迴圈,可以通過seq命令來實現,就不需要變數的自增了;這裡的C語言for迴圈風格是挺熟悉的吧。

二、while迴圈語句

執行個體2.1 迴圈輸出1到10的數字

複製代碼 代碼如下:

#!/bin/bash
myvar=1
while [ $myvar -le 10 ]
do
        echo $myvar
        myvar=$(( $myvar + 1 ))
done

註:只要特定條件為真,”while” 語句就會執行

三、until迴圈語句

執行個體3.1 迴圈輸出1到10的數字
“Until” 語句提供了與 “while” 語句相反的功能:只要特定條件為假,它們就重複。下面是一個與前面的 “while” 迴圈具有同等功能的 “until” 迴圈。

複製代碼 代碼如下:

#!/bin/bash
myvar=1
until [ $myvar -gt 10 ]
do
        echo $myvar
       myvar=$(( $myvar + 1 ))
done

Linux Shell中寫迴圈時,常常要用到變數的自增,現在總結一下整型變數自增的方法。
我所知道的,bash中,變數自增,目前有五種方法:
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))
可以實踐一下,簡單的執行個體如下:
複製代碼 代碼如下:

#!/bin/bash
i=0;
while [ $i -lt 4 ];
do
      echo $i;
      i=`expr $i + 1`;
      # let i+=1;
      # ((i++));
      # i=$[$i+1];
      # i=$(( $i + 1 ))
done

相關文章

聯繫我們

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