標籤:
這篇介紹shell的文法,包括shell中的變數,條件判斷,控制結構和函數。此外,這篇的所有命令都在變數條件控制結構函數。下一篇是命令和命令的執行。
Shell的文法
條件
所有程式設計語言的基礎都是對條件的進行測試判斷,並根據不同測試結果採取不同行動。一個
shell指令碼能夠對任何可以從命令列上調用的命令的
退出碼進行測試,其中也包括自己編寫的指令碼程式。這也就是要在所有自己編寫的指令碼程式的
結尾包括一條返回值的命令的重要原因。
test或[命令
大多數指令碼程式都會廣泛使用shell的布爾判斷命令[或test
例如:[ -f fred.c ] 注意必須在
[符號
和被檢查的條件之間留出空格。如果把then和if放在同一行上,則需要使用一個分號把test語句和then分隔開。
test命令可以使用的條件類型可以分為3類:字串比較,算術比較和與檔案有關的條件測試。
字串比較 結果
string1 = string2
string1 != string2
-n string 如果字串不為空白,則結果為真
-z string 如果字串為null,則結構為真
算術比較 結果
expres1 -ep expres2 如果兩個運算式相等,則結果為真
expres1 -ne expres2 如果兩個運算式不等,則結果為真
expres1 -gt expres2 如果expres1大於expres2,則結果為真
expres1 -ge expres2 如果expres1大於等於expres2,則結果為真
expres1 -lt expres2 如果expres1小於
expres1 -le expres2 如果expres1小於等於
! expres 如果expres為假,則結果為真
檔案條件測試 結果
-d file 如果檔案是一個目錄,則結果為真
-e file 如果檔案存在,則結果為真(通常使用-f)
-f file 如果檔案是一個普通檔案,則結果為真
-g file 如果檔案的set-group-id位被設定,則
-r file 如果檔案可讀,則
-s file 如果檔案的大小不為0,則
-u file 如果檔案的set-user-id位被設定,則
-w file 如果檔案可寫,則
-x file 如果檔案可執行,則
控制結構
shell有一組控制結構,它們與其他程式設計語言中的控制結構類似。
1.if語句
if conditon
then
statement
else
statement
fi
2.elif語句
3.判斷條件時,注意給變數加上引號,這樣一個空變數提供的就是合法測試了。
4.for語句
for variable in values
do
statement
done
5.while語句
因為在預設情況下,所有的shell變數值都被認為是字串,所以for迴圈特別適合對於一系列字串進行迴圈處理,但如果事先並不知道迴圈要執行的次數,那麼使用while。
while condition do
statement
done
6.until語句
until condition
do
statement
done
7.case語句
case variable in
pattern [ | pattern] ...) statement;;
pattern [ | pattern] ...) statement;;
esac
8.命令列表
有時需要將多條命令串連成一個序列。
AND列表
AND列表結構:
只有在前面所有的命令都執行成功的情況下才執行後一條命令。
statement1 && statement2 && statement3 && ...
從左向右執行每一條命令,&&的作用是檢查前一條命令的返回值是否為true。
OR列表
OR列表結構允許我們
持續執行一系列命令直到有一條命令成功為止,其後的命令將不再被執行。
statement1 || statement2 || statement3 || ...
從左開始執行每條語句,如果一條命令返回的是false,它右邊的下一條命令才能被執行。
9.語句塊
如果想在某些允許使用單個語句的地方使用多條語句,可以把它們括在花括弧{}中來構造一個語句塊。
函數
要定義一個shell函數,只需要寫出它的名字,然後是一對空括弧,再把函數中的語句放在一對花括弧中,如下所示:
function_name(){
statement
}
linux程式設計——shell程式設計(第二章)