Shell指令碼中的迴圈語句

2022-07-28 01:15:10 字數 2839 閱讀 5716

這裡包括for/while/until迴圈,以及變數自增的語法例項。

一、for迴圈語句

例項1.1 最基本的for迴圈: (傳統的形式,for var in …)

1

#!/bin/bash

2for x in

one two three four3do

4echo number $x

5 done

執行結果:

1 [root@my-server games]#

sudo sh looptest.sh

2number one

3number two

4number three

5 number four

注:」for」 迴圈總是接收 「in」 語句之後的某種型別的字列表。在本例中,指定了四個英語單詞,但是字列表也可以引用磁碟上的檔案,甚至檔案萬用字元。

例項1.2 對目錄中的檔案做for迴圈

1

#!/bin/bash

2for x in /var/log/*3do

4 echo $(basename $x) is a file living in /var/log

5 done

執行結果:

1 [root@my-server games]#

sudo sh fortest2.sh

2 boot.log is a file living in /var/log

3 boot.log-20180307 is a file living in /var/log

4 boot.log-20180308 is a file living in /var/log

5 ......

注:這個$x獲得的是絕對路徑檔名;可以使用 「basename」 可執行程式來除去前面的路徑資訊。如果只引用當前工作目錄中的檔案(例如,如果輸入 「for x in *」),則產生的檔案列表將沒有路徑資訊的字首。

例項1.3 for迴圈中用seq產生迴圈次數,加上c語言形式的for迴圈語句

1

#!/bin/bash

2 echo "

for: traditional form: for var in ..."3

for j in $(seq 1 5)4do

5echo $j

6done

78 echo "

for: c language form: for (( exp1; exp2; exp3 ))"9

10for (( i=1; i<=5; i++))

11do

12 echo "

i=$i

"13 done

執行結果:

1 [root@my-server games]#

sudo sh fortest4.sh

2for: traditional form: for var in

...3 1

4 25 3

6 47 5

8for: c language form: for

(( exp1; exp2; exp3 ))

9 i=1

10 i=2

11 i=3

12 i=4

13 i=5

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

二、while迴圈語句

例項2.1 迴圈輸出1到10的數字

1

#!/bin/bash

2 myvar=1

3while [ $myvar -le 10]4do

5echo $myvar

6 myvar=$(( $myvar + 1))

7 done

執行結果:

[root@my-server games]#

sudo sh whiletest.sh12

3456

78910

附:shell中的[-eq] [-ne] [-gt] [-lt] [-ge] [-le]

-eq           //等於

-ne           //不等於

-gt            //大於 (greater )

-lt            //小於  (less)

-ge            //大於等於

-le            //小於等於

三、until迴圈語句

例項3.1 迴圈輸出1到10的數字

「until」 語句提供了與 「while」 語句相反的功能:只要特定條件為假,它們就重複。下面是乙個與前面的 「while」 迴圈具有同等功能的 「until」 迴圈。

1

#!/bin/bash

2 myvar=1

3 until [ $myvar -gt 10]4do

5echo $myvar

6 myvar=$(( $myvar + 1))

7 done

執行結果與while迴圈結果一樣

linux shell中寫迴圈時,常常要用到變數的自增,現在總結一下整型變數自增的方法。

我所知道的,bash中,變數自增,目前有五種方法:

1. i=`expr $i + 1`;

2. let i+=1;

3. ((i++));

4. i=$[$i+1];

5. i=$(( $i + 1 ))

shell指令碼迴圈語句

條件判斷 if語句 語法格式 if expression then statement s to be executed if expression is true fi注意 expression 和方括號 之間必須有空格,否則會有語法錯誤。if 語句通過關係運算子判斷表示式的真假來決定執行哪個分支...

shell指令碼實戰 while迴圈語句

上文我們討論了for迴圈的使用,在有限迴圈裡,我們使用for迴圈是很方便的一件事情,今天我們來 下while迴圈 while迴圈語句的語法分析 語法格式一 while 條件 do 操作 done 語法格式二 while read line do 操作 done file 通過read命令每次讀取一行...

shell指令碼程式設計之迴圈語句

在執行指令碼時重複執行一系列的命令是很常見的,這時我們就需要使用迴圈語句來達到這個目的。一 for命令 格式 for 變數 in 列表 do 迴圈體done for命令會遍歷列表中的每乙個值,並且在遍歷完成後退出迴圈。列表形式有以下幾種 1 在命令中定義的一系列的值 2 變數 3 命令 4 目錄 5...