和c語言類似,
shell
中也有函式的概念,但是函式定義中沒有返回值也沒有引數列表。例如:
#! /bin/sh
foo()
echo "-=start=-"
fooecho "-=end=-"
注意函式體的左花括號
寫在同一行,命令末尾必須有分號;。但,不建議將函式定義寫至一行上,不利於指令碼閱讀。
在定義foo()函式時並不執行函式體中的命令,就像定義變數一樣,只是給
foo這個名乙個定義,到後面呼叫
foo函式的時候(注意
shell
中的函式呼叫不寫括號)才執行函式體中的命令。
shell
指令碼中的函式必須先定義後呼叫,一般把函式定義語句寫在指令碼的前面,把函式呼叫和其它命令寫在指令碼的最後(類似
c語言中的
main
函式,這才是整個指令碼實際開始執行命令的地方)。
shell函式沒有引數列表並不表示不能傳引數,事實上,函式就像是迷你指令碼,呼叫函式時可以傳任意個引數,在函式內同樣是用$0、
$1、$2等變數來提取引數,函式中的位置引數相當於函式的區域性變數,改變這些變數並不會影響函式外面的$0、
$1、$2等變數。函式中可以用
return
命令返回,如果
return
後面跟乙個數字則表示函式的
exit status
。下面這個指令碼可以一次建立多個目錄,各目錄名通過命令列引數傳入,指令碼逐個測試各目錄是否存在,如果目錄不存在,首先列印資訊然後試著建立該目錄。
#! /bin/sh
is_directory()
for dir in "$@"; do
if is_directory "$dir"
then :
else
echo "$dir doesn't exist. creating it now..."
mkdir $dir > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "cannot create directory $dir"
exit 1
fifi
done
shell學習筆記之八(函式)
函式 定義 1 無返回值 function為關鍵字,function name為函式名 function function name 省略關鍵字function,效果一樣 function name 例 1 簡單函式宣告和呼叫 bin bash function sayhello sayhello ...
shell學習之 shell呼叫shell
2008 05 06 14 43 18 分類 linux 標籤 字型大小 大中小訂閱 fork是最普通的,就是直接在指令碼裡面用 directory script.sh來呼叫script.sh這個指令碼.執行的時候開乙個sub shell執行呼叫的指令碼,sub shell執行的時候,parent ...
Shell學習之shell語法
shell指令碼就是將完成乙個任務的所有的命令按照執行的先後順序,自上而下寫入到乙個文字檔案中,然後給予執行許可權。shell指令碼的命名 名字要有意義 不超過30個位元組 sh結尾 名字不要太長 區分大小寫 shell指令碼格式 shell指令碼開頭必須指定指令碼執行環境 以 這個特殊符號組合來組...