1. 程式人生 > >shell指令碼下的迴圈語句for、while、until

shell指令碼下的迴圈語句for、while、until

在shell 指令碼下的for迴圈語句
第一種格式:

for curvar in list
do
 statements
done

對於list中的每一個值都要執行一次statments時應利用這種格式,對每次迴圈都是把list中的當前值賦值給變數curvar,list可以是含有幾個項的變數也可以是用空格分隔的值表。
例項1:列印1~6

[admin@localhost Linux]$ vim 1.bat
[admin@localhost Linux]$ cat 1.bat
for i in 1 2 3 4 5 6
do
echo $i
done
[admin@localhost
Linux]$ bash 1.bat 1 2 3 4 5 6

例項2:當然在這種格式下我們對在命令列給出的實參的字串迴圈打印出來

[admin@localhost Linux]$ vim 2.bat
[admin@localhost Linux]$ cat 2.bat
for thing in "$@"
do
echo you typed ${thing}.
done
[admin@localhost Linux]$ bash 2.bat sdfgg lll jjj
you typed sdfgg.
you typed lll.
you typed jjj.

例項3:也可以將目錄下的檔案都打印出來
為basename指定一個路徑,basename命令會刪掉所有的字首包括最後一個slash(‘/’)字元,然後將字串顯示出來

[admin@localhost 3_29_SC]$ vim 3.bat
[admin@localhost 3_29_SC]$ cat 3.bat
#display dir ->file
for x in /admin/Linux/3_29_SC/*
do
echo  $(basename $x) is file in /admin/Linux
done
[admin@localhost 3_29_SC]$ bash 3.bat
1.bat 1.c 2.bat 2.c 3.bat is file in /admin/Linux

第二種:採用C語言for迴圈的方式列印1~10

[admin@localhost
3_29_SC]$ vim 4.bat [admin@localhost 3_29_SC]$ cat 4.bat #display 1~10 for((i=1;i<=10;i++)) do echo $i done [admin@localhost 3_29_SC]$ bash 4.bat 1 2 3 4 5 6 7 8 9 10

例項2:列印1~10並且對1~10求和

[admin@localhost 3_29_SC]$ vim 5.bat
[admin@localhost 3_29_SC]$ cat 5.bat
#diplay 1~10and sum
for((i=1;i<=10;i++))
do
echo $i
let "sum=sum+i"
done 
echo $sum
[admin@localhost 3_29_SC]$ bash 5.bat
1
2
3
4
5
6
7
8
9
10
55

while迴圈
while語句用來當指定的條件為真時進行一系列的命令,一旦條件判斷為假,迴圈就立即終止。如果所指定條件一開始就為假,則不會執行迴圈
Linux下
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於

例項1:利用while迴圈列印1~10

[admin@localhost 3_29_SC]$ vim 6.bat
[admin@localhost 3_29_SC]$ cat 6.bat
#use while to display 1~10
i=1
while [ $i -lt  11 ]
do
echo $i
let "++i"
done
[admin@localhost 3_29_SC]$ bash 6.bat
1
2
3
4
5
6
7
8
9
10

關於until 語句
until語句是和while語句的判斷相反,條件為假時才進入迴圈

[admin@localhost 3_29_SC]$ vim 8.bat
[admin@localhost 3_29_SC]$ cat 8.bat
#until 
i=1
until [ $i -gt 10 ]
do
echo $i
let "++i"
done
[admin@localhost 3_29_SC]$ bash 8.bat
1
2
3
4
5
6
7
8
9
10