#! /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或者 ...