Shell for迴圈及用法舉例

2020-07-16 10:04:35
for 迴圈是固定回圈,也就是在迴圈時已經知道需要進行幾次迴圈。有時也把 for 迴圈稱為計數迴圈

for 迴圈的語法有如下 2 種。

語法一

for 變數 in 值1 值2 值3…
do
程式
done

在這種語法中,for 迴圈的次數取決於 in 後面值的個數(以空格分隔),有幾個值就回圈幾次,並且每次回圈都把值賦予變數。也就是說,假設 in 後面有三個值,for 會迴圈三次,第一次迴圈會把值 1 賦予變數,第二次迴圈會把值 2 賦予變數,以此類推。

【例 1】列印時間。

[[email protected] ~]# vi sh/for.sh
#!/bin/bash 列印時間
for time in morning noon afternoon evening
do
echo "This time is $time!"
done

解釋一下指令碼思路:in 值後面有 4 個字串,所以這個 for 會迴圈 4 次。每次回圈會依次把字串賦予變數 time,所以這個指令碼會迴圈 4 次,並依次輸出"morning noon afternoon evening"這 4 個字串。這個指令碼執行之後是這樣子的:

[[email protected] ~]# sh/for.sh
This time is morning!
#第一次迴圈把morning賦予變數time
This time is noon!
#第二次迴圈把noon賦予變數time
This time is afternoon!
第三次迴圈把afternoon賦予變數time
This time is evening!
#第四次迴圈把evening賦予變數time,迴圈結束

因為關鍵字 in 後面有 4 個值,所以 for 會迴圈 4 次。每次回圈時,會依次把 4 個值賦予變數 time。非常簡單吧!

語法二

for ((初始值;迴圈控制條件;變數變化))
do
程式
done

在語法二中需要注意以下幾點:
  • 初始值:在迴圈開始時,需要給某個變數賦予初始值,如 i=1。
  • 迴圈控制條件:用於指定變數回圈的次數,如 i<=100,則只要 i 的值小於等於 100,迴圈就會繼續。
  • 變數變化:每次迴圈之後,變數該如何變化,如 i=i+1,代表每次迴圈之後,變數的值都加 1。

語法二和其他語言中的 for 迴圈類似,也就是事先決定迴圈次數的固定回圈。先舉一個簡單的例子。

【例 2】從 1 加到 100。

#!/bin/bash
#從 1 加到100
s=0
for(( i=1;i<=100;i=i+1))
#定義迴圈100次
do
s=$(($s+$i))
#每次回圈給變數s賦值
done
echo "The sum of 1+2+..+100 is : $s"
#輸出從1加到100的和