轉載請標明:http://www.cnblogs.com/winifred-tang94/ if條件語句語法: if [ 條件表達式 ] then 代碼 else 代碼 fi 註意:在上面的if條件語句中,if和 [ 之間要有空格,而條件表達式和兩邊的 [ ] 都要有空格,條件表達式不能緊挨著 [ ...
轉載請標明:http://www.cnblogs.com/winifred-tang94/
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