1. 程式人生 > >shell程式設計-迴圈語句

shell程式設計-迴圈語句

一、for語句

for迴圈語句有兩種格式,分別如下:

(一)for in語句

for var in list 
do
    commands
done

list代表要迴圈的值,在每次迴圈的時候,會把當前的值賦值給var(變數名而已,隨意定), 這樣在迴圈體中就可以直接通過$var獲取當前值了。list裡面的值預設以空格分割,可以通過環境變數IFS控制

例項1:

  1 #!/bin/bash
  2 
  3 for i in 1 2 3 4 5
  4 do
  5     echo $i
  6 done

輸出結果:

[email protected]
:~/liyijun$ source for.sh 1 2 3 4 5

例項2:

  1 #!/bin/bash
  2 list="a b c d"
  3 for str in $list
  4 do
  5     echo $str
  6 done

輸出結果;

[email protected]:~/liyijun$ source for.sh 
a
b
c
d

(2)C語言風格的for迴圈

  1 #!/bin/bash
  2 
  3 for(( i=0;i<11;i++ ))
  4 do
  5     echo $i
  6 done

輸出結果:

[email protected]:~/liyijun$ source for.sh 
0
1
2
3
4
5
6
7
8
9
10

二、while語句

其基本格式如下:

while command 
do
    commands
done

可以看出來其判斷依然是一個命令執行之後的返回狀態,這一點跟if控制語句一樣,所以理所當然,也會有test、雙括號等。

例項1:

  1 #!/bin/bash
  2 
  3 i=0
  4 while (( $i<5 ))
  5 do
  6    # i=$[$i+1]
  7    (( i++ ))
  8     echo $i
  9 done

這個地方處理類似於c語言的i++有好多種方法,可以參考下面的部落格:

https://blog.csdn.net/agent_007/article/details/52265819?locationNum=2&fps=1

 

三、使用break和continue來控制迴圈

(一)、break的兩種用法

  • break   用來跳出最近的迴圈
  • break n   n是一個整數,代表跳出當前迴圈的外層的第幾層迴圈

例項1:

  1 #!/bin/bash
  2 
  3 for(( i=0;i<11;i++ ))
  4 do
  5     if (( i==5 ))
  6     then
  7         break
  8     fi
  9     echo $i
 10 done

輸出結果:

[email protected]:~/liyijun$ source for.sh 
0
1
2
3
4

 例項2:

#!/bin/bash
j=0
while (( j<5 ))
do
	(( j++ ))
	echo "j = $j"
	for(( i=0;i<2;i++ ))
	do
	    if (( j==3 ))
	    then 
		break 2
	    fi
	    echo "i = $i"
	done
done

輸出結果;

j = 1
i = 0
i = 1
j = 2
i = 0
i = 1
j = 3

(二)、coutinue

continue表示終止當前的一次迴圈,進入下一次迴圈,注意,continue後面的語句不會執行。其用法和break類似,不再贅述。

 

REF:

https://www.cnblogs.com/dongying/p/6376166.html