Shell指令碼語法 函式

2021-08-31 05:21:35 字數 1101 閱讀 7210

#! /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

注意is_directory()返回0表示真返回1表示假。

原文:

Shell指令碼語法

定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...

shell指令碼 語法

條件測試 test 命令test 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。注意 命令 各引數之間應該用空格隔開,以 結尾。但是 不是命令。測試命令 d dir 如果dir存在並且是乙個目錄則為真 f file 如果file存在並...

shell指令碼語法

測試乙個條件是否成立,python ubuntu 1004 var 2 python ubuntu 1004 test var python ubuntu 1004 echo 0python ubuntu 1004 test var gt 5 python ubuntu 1004 echo 1或者 ...