[ function ] funname [()] { action; [return int;] }
#!/bin/bash input() { echo $1 $2 $# $0 } input 1 a b
[root@test01 jiaoben]# sh fun1.sh 1 a 3 fun1.sh
#!/bin/bash fun(){ echo "這個函數會對輸入的兩個數字進行相加運算..." echo "輸入第一個數字: " read aNum echo "輸入第二個數字: " read anotherNum echo "兩個數字分別爲 $aNum 和 $anotherNum !" c=$(($aNum+$anotherNum)) } fun echo "輸入的兩個數字之和爲 $c !"
[root@test01 jiaoben]# sh -x fun3.sh + fun + echo 這個函數會對輸入的兩個數字進行相加運算... 這個函數會對輸入的兩個數字進行相加運算... + echo '輸入第一個數字: ' 輸入第一個數字: + read aNum 999 + echo '輸入第二個數字: ' 輸入第二個數字: + read anotherNum 999 + echo '兩個數字分別爲 999 和 999 !' 兩個數字分別爲 999 和 999 ! + c=1998 + echo '輸入的兩個數字之和爲 1998 !' 輸入的兩個數字之和爲 1998 !
案例三:shell
#!/bin/bash fun(){ echo "第一個參數爲 $1 !" echo "第二個參數爲 $2 !" echo "第十個參數爲 $10 !" ##這裏是咱們正常使用數字表示第十個參數。 echo "第十個參數爲 ${10} !" echo "第十一個參數爲 ${11} !" echo "參數總數有 $# 個!" echo "做爲一個字符串輸出全部參數 $* !" } fun 1 2 3 4 5 6 7 8 9 34 73
[root@test01 jiaoben]# sh fun4.sh 第一個參數爲 1 ! 第二個參數爲 2 ! 第十個參數爲 10 ! ## 發現這種寫法是不可以得到第十個參數的值的。 第十個參數爲 34 ! 第十一個參數爲 73 ! 參數總數有 11 個! 做爲一個字符串輸出全部參數 1 2 3 4 5 6 7 8 9 34 73 !
注意,$10 不能獲取第十個參數,獲取第十個參數須要${10}。當n>=10時,須要使用${n}來獲取參數。 | 參數 | 說明 | | ------------ | ------------ | | $# | 傳遞到腳本的參數個數 | | $* | 以一個單字符串顯示全部向腳本傳遞的參數 | | $$ | 腳本運行的當前進程ID號 | | $! | 後臺運行的最後一個進程的ID號 | | $@ | 與$*相同,可是使用時加引號,並在引號中返回每一個參數。 | | $- | 顯示Shell使用的當前選項,與set命令功能相同。 | |$? | 顯示最後命令的退出狀態。0表示沒有錯誤,其餘任何值代表有錯誤。|數組
定義數組 a=(1 2 3 4 5); echo ${a[@]} echo ${#a[@]} 獲取數組的元素個數 echo ${a[2]} 讀取第三個元素,數組從0開始 echo ${a[*]} 等同於 ${a[@]} 顯示整個數組 數組賦值 a[1]=100; echo ${a[@]} a[5]=2; echo ${a[@]} 若是下標不存在則會自動添加一個元素 數組的刪除 unset a; unset a[1] 數組分片 a=(`seq 1 5`) echo ${a[@]:0:3} 從第一個元素開始,截取3個 echo ${a[@]:1:4} 從第二個元素開始,截取4個 echo ${a[@]:0-3:2} 從倒數第3個元素開始,截取2個 數組替換 echo ${a[@]/3/100} a=(${a[@]/3/100})