Linux Shell程式設計 迴圈語法

2022-07-31 19:54:13 字數 2594 閱讀 2253

for 迴圈是固定迴圈,也就是在迴圈時已經知道需要進行幾次迴圈。有時也把 for 迴圈稱為計數迴圈。

語法:

for 變數 in

值1 值2 值3…

do程式

done

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

示例:列印時間。

[root@localhost ~]# vi

sh/for.sh

#!/bin/bash 列印時間

fortime

inmorning noon afternoon evening

doecho

"this time is $time!

"done

in 值後面有 4 個字串,所以這個 for 會迴圈 4 次。每次迴圈會依次把字串賦予變數 time,所以這個指令碼會迴圈 4 次,並依次輸出"morning noon afternoon evening"這 4 個字串。 

for

((初始值;迴圈控制條件;變數變化))

do程式

done

示例:從 1 加到 100 

#!/bin/bash

#從 1

加到100

s=0for(( i=1;i<=100;i=i+1

))#定義迴圈100次

dos=$(($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()

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 迴圈和 unti 迴圈都是條件迴圈,主要是指迴圈可以一直進行,直到使用者設定的條件達成為止。

while

[條件判斷式]

do程式

done

示例:從 1 加到 100。

#!/bin/bash

#從1加到100

i=1s=0

#給變數i和s賦值

while [$i -le 100

]#如果變數的值小於等於100,則執行迴圈

dos=$(($s+$i))

i=$(($i+1

))done

echo

"the sum is: $s

"

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

unti 迴圈,和 while 迴圈相反,只要條件判斷式不成立,則進行迴圈,並執行迴圈程式;一旦條件判斷式成立,則中止迴圈。語法如下:

until

[條件判斷式]

do程式

done

示例:從1加到100。

[root@localhost ~]#vi

sh/until.sh

#!/bin/bash

#從1加到100

i=1s=0

#給變數i和s賦值

until [$i-gt 100

]#迴圈,直到變數i的值大於100,就停止迴圈

dos=$(($s+$i))

i=$(($i+1

))done

echo

"the sum is: $s

"

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

linux shell程式設計for迴圈

對變數的賦值通過在in後面直接賦值,多個賦值通過空格隔開。for 變數 in 值1 值2 值3 do命令序列 done bin bash 示例一 for i in do for j in doecho done done 示例二 for var in aaa bbb ccc do echo var當...

Linux Shell程式設計 for迴圈

1 列印數字迴圈,反引號 代表是命令被執行 bin bash for i in seq 1 15 do echo the num is i done2 求1 100的和 bin bash auto sum 1 100 expr a b sum sum 0 for i 0 i 100 i do sum...

Linux shell指令碼 (十四)while語句

while迴圈用於不斷執行一系列命令,也用於從輸入檔案中讀取資料 命令通常為測試條件。其格式為 while expression do.done count 0 while count lt5 docount count 1 echo count done 執行指令碼,輸出 123 45echo n...