shell的結構分為三大類:順序結構、分支結構和迴圈結構
1. if語句
語法格式:如果語句序列a中的最後乙個命令的返回值為0,則執行語句序列b中的命令,然後繼續執行fi以後的命令;如果語句序列a中的最後乙個命令的返回值為非0,則跳轉到fi並且繼續執行fi以後的命令,注意,在這裡a執行結果為0認為是真。if 《語句序列a>
then
《語句序列b>
fi
iftest –f funfilethen
echo funfile exists
fi
if [ -f funfile ]; then2. if-else語句echo funfile exists
echo hello
fi
語法格式:
if如果語句序列a中的最後乙個命令的返回值為0,則執行語句序列b中的命令,然後繼續執行fi以後的命令;如果語句序列a中的最後乙個命令的返回值為非0,則執行語句序列c中的命令,然後繼續執行fi以後的命令。語句序列a
then
語句序列b
else
語句序列c
fi
任何命令的返回值都可以作為判斷條件,也可以巢狀if語句,但必須保證if 和 fi配對。
if [ 「$x」 –lt 10 ]; then也可以使用一種簡寫形式:elif來代替乙個else if 巢狀。echo x is less than 10
else
if [ 「$x」 –gt 10 ]; then
echo x is greater than 10
else
echo x is equal to 10
fifi
3. case結構
語法結構:
case 單詞 in分支選擇是順序地對單詞和所提供的模式進行比較,如果一致,就執行後面的語句序列,然後跳轉到esac,並執行後續的語句。典型情況下,單詞是乙個變數,而模式可以使用?, *等萬用字元。模式a)
語句序列a
;;模式b)
語句序列b
;;...
esac
case 「$1」 in4. while語句start)
start
;;stop)
stop
;;*)
echo 「usage: $0 」
;;esac
語法格式:
while語句功能:依次執行語句序列a中的命令,如果語句序列a最後乙個命令的返回值為0,則執行語句序列b,回到步驟1,重複上面的過程,直到語句序列a中的最後乙個命令的返回值為非0。語句序列a
do語句序列b
done
x=1這裡解釋一下let命令,let在shell中執行算數運算。命名的引數可以在算術表示式中直接利用名稱訪問,不要前面帶有「$」符號。當訪問命名引數時,就作為算術表示式計算它的值。算術表示式按長整數進行求值,並且不檢查溢位。當然,用0作除數就產生錯誤。let的替代表示形式是:((算數表示式))while ((x <= 10))
do echo x is $x
let x=x+1
done
5. until語句
語法結構:
untiluntil語句和while語句只有在測試條件上是相反的,其他的都一樣。語句序列a
do語句序列b
done
6. for語句
語法結構
for var in list1.如果list中還包含有token,則轉到步驟2,否則結束;2.var被設定為list中的下乙個token;3.語句序列a中的命令被執行;4.返回步驟1do語句序列a
done
echo file list:7. continue和break語句for i in *; do
echo $i
done
如果在迴圈體中使用continue則跳出本次迴圈,進入下一次迴圈;使用break則跳出整個迴圈。
8. shell函式
函式是指令碼內的指令碼,使用函式比起使用乙個新的指令碼可以大大加快呼叫速度。
有兩種函式格式:
(1)function 函式名
(2)函式名()
呼叫函式就像呼叫乙個shell指令碼或者命令一樣,直接在寫函式名字,如果需要,還可以跟引數。shell查詢命令的順序是:別名,關鍵字,函式,內部命令,指令碼和可執行程式,所以函式可能遮蔽外部指令碼或者程式。
可以給函式傳遞引數,在函式中處理和在普通指令碼中處理引數基本一樣,使用$1等位置引數,或者$*,$#等,但¡在函式中的$0並不表示函式名,而仍然是指令碼的檔名。
start()呼叫
start a b c如果不作特殊說明,在函式內訪問的變數是整個指令碼共享的變數,如果要定義只在函式內有效的區域性變數,則需要使用local語句。
shell程式設計入門
shell指令碼程式不是複雜的程式,它是按行解釋的。指令碼程式總是以 bin sh 開始,它通知shell使用系統上的bourne shell直譯器。其中 符號是注釋。指令碼程式是從上到下執行的,執行指令碼前需要改變該指令碼程式的執行許可權。確保正確建立指令碼例徑,只有 這樣,指令碼程式才能正確執行...
Shell 程式設計入門
首先建立乙個檔案 在終端中輸入如下命令 vi helloworld.sh 然後按i進行命令編寫 下面這句話是必須寫的 bin sh這句話是必須寫的 bin sh a hello world echo a 下面執行的時候先得輸入 將這個許可權改為可執行檔案 chmod x helloworld.sh ...
Shell程式設計入門
目錄 shell概述 shell解析器 shell指令碼 什麼是shell指令碼 編寫shell指令碼 1 指令碼格式 2 第乙個shell指令碼 helloworld 3.指令碼的常用執行方式 第一種 採用bash或sh 指令碼的相對路徑或絕對路徑 不用賦予指令碼 x許可權 第二種 採用輸入指令碼...