shell指令碼下的迴圈語句for、while、until
阿新 • • 發佈:2019-02-20
在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