歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

在shell腳本中進行條件控制以及使用循環

if條件語句語法:

if [ 條件表達式 ]

then

          代碼

else

          代碼

fi

注意:在上面的if條件語句中,if和 [ 之間要有空格,而條件表達式和兩邊的 [ ] 都要有空格,條件表達式不能緊挨著 [ 和 ]。

if條件表達式以fi結束。

Eg.

結果出現了以下問題:

原因是因為開頭在#!後還要有一個/,加上/後解釋器錯誤沒有了,代碼如下:

可是仍然有沒有那個文件或目錄的錯誤。對於這個錯誤我覺得是echo後的表達式有問題,於是注銷了表達式,改輸出small和bigger,結果程序運行正確,輸出了small或者bigger。

所以對於echo後的表達式,我把表達式加上雙引號,結果運行成功,沒有問題了。

利用case表達式進行條件判斷:

case 變量 in

str1)

命令串;;

str2)

命令串;;

*)

Eg.

剛才之所以出錯,是因為代碼沒有正確結尾,case條件語句在shell中應該以esca結尾。

又出現錯誤如下:

原因:

        *後面的)為中文符號,將它改為英文符號,並且case條件語句的結束應該為esca而不是easc,修正後如下:

就正確了,正確結果如下:

在shell腳本中使用for循環

shell中可以使用三種循環:

A、for循環

第一種語法形式:
for var in list

do

        命令串

done

注意上面的list的形式可以使用空格分隔的$1 $2 $3,或者空格分隔的值1 2 3。

第二種語法形式:

for var

do

        命令串

done

在這種形式中,list被省略了,那麼這時list就是指命令行參數,每次循環的var都是一個命令行參數。

eg.輸出命令行參數的和

注意上面shell程序中echo命令的參數 -e是為了讓\c 和\b生效,其中\c是表示輸出加數後不換行,\b是退格的意思刪除多余的+號。

運行腳本後出現錯誤:

原因:

        expr不能喝test指令的-gt婚後在一起用,要不然將expr改為test,要不然將-gt改為>=

,值得注意的是>=前面要使用\。

仍然出錯為:

原因為:

        sum求和時,等號兩端不能有空格

改為:

運行後結果為:

B、while循環

語法格式:
while 條件表達式

do

        命令行串;

done

eg.輸出命令行每個參數

shift命令將命令行參數左移,是原來處於第二位的參數變成第一位然後輸出。

結果為:

注意while循環的條件表達式也要用空格將條件表達式與 [ 和 ]分隔開來。

如果要在while中使用另一個變量n,要用 -n 的形式來表示在循環體中使用的一元表達式:

當然如果while中不添加-n也有一樣的結果:

C、until循環

語法格式如下:

until 條件表達式

do

        命令串;

done

Copyright © Linux教程網 All Rights Reserved