1. 程式人生 > >Linux Shell編程 循環語法

Linux Shell編程 循環語法

oot inf while 循環 bash for 量變 func $2 else

for循環

for 循環是固定循環,也就是在循環時已經知道需要進行幾次循環。有時也把 for 循環稱為計數循環。
語法:

for 變量 in 值1 值2 值3…
do
程序
done

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

示例:打印時間。

[root@localhost ~]# 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 個字符串。

for ((初始值;循環控制條件;變量變化))
do
程序
done
  • 初始值:在循環開始時,需要給某個變量賦予初始值,如 i=1。
  • 循環控制條件:用於指定變量循環的次數,如 i<=100,則只要 i 的值小於等於 100,循環就會繼續。
  • 變量變化:每次循環之後,變量該如何變化,如 i=i+1,代表每次循環之後,變量的值都加 1。

示例:從 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的和

用函數實現從 1 加到 mun的和:

[root@localhost ~]# vi sh/function.sh
#!/bin/bash
#接收用戶輸入的數字,然後從1加到這個數字
function sum () { #定義函數sum s=0 for (( i=0;i<=$1;i=i+1 )) #循環直到i大於$1為止。$1是函數sum的第一個參數 #在函數中也可以使用位置參數變量,不過這裏的$1指的是函數的第一個參數 do s=$(( $i+$s )) done echo "The sum of 1+2+3...+$1 is : $s" #輸出從1加到$1的和 } read -p "Please input a number: " -t 30 num #接收用戶輸入的數字,並把值賦予變量num y=$(echo $num 丨 sed s/[0-9]//g) #把變量num的值替換為空,並賦予變量y if [ -z "$y"] #判斷變量y是否為空,以確定變量num中是否為數字 then sum $num #調用sum函數,並把變量num的值作為第一個參數傳遞給sum函數 else echo "Error!! Please input a number!" #如果變量rmm的值不是數字,則輸出報錯信息 fi

函數的位置參數變量:$0 代表函數名,$1 代表函數的第 1 參數,$2 代表函數的第 2 個參數,以此類推。

while循環

while 循環和 unti 循環都是條件循環,主要是指循環可以一直進行,直到用戶設定的條件達成為止。
while [條件判斷式]
do
程序
done
示例:從 1 加到 100。
#!/bin/bash
#從1加到100
i=1
s=0
#給變量i和s賦值
while [$i -le 100]
#如果變量的值小於等於100,則執行循環
do
s=$(($s+$i))
i=$(($i+1))
done
echo "The sum is: $s"

對於 while 循環來講,只要條件判斷式成立,循環就會執行。所以,只要i的值小於等於 100,循環就會繼續。每次循環給變量 s 加入變量 i 的值,再給變量加 1,直到變量 i 的值大於 100,循環才會停止。然後輸出變量 s 的值,也就是從 1 加到 100 的和。

until循環

unti 循環,和 while 循環相反,只要條件判斷式不成立,則進行循環,並執行循環程序;一旦條件判斷式成立,則中止循環。語法如下:
until [條件判斷式]
do
程序
done
示例:從1加到100。
[root@localhost ~]#vi sh/until.sh
#!/bin/bash
#從1加到100
i=1
s=0
#給變量i和s賦值
until [$i-gt 100]
#循環,直到變量i的值大於100,就停止循環
do
s=$(($s+$i))
i=$(($i+1))
done
echo "The sum is: $s"

對於 until 循環來講,只要條件判斷式不成立,循環就會繼續;一旦條件判斷式成立,循環就會停止。所以我們判斷變量i的值是否大於 100,一旦變量的值大於 100,循環就會停止。

Linux Shell編程 循環語法