Shell學習之函式

2021-08-19 04:08:21 字數 1148 閱讀 7162

和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指令碼開頭必須指定指令碼執行環境 以 這個特殊符號組合來組...