Shell函數(shu)
時間:2018-09-25 來(lai)源(yuan):未知(zhi)
1、 函數定義
格式一:
function name()
{
Command sequence;
}
格式二:
name()
{
Command sequence);
}
1、()內是(shi)沒有參數的,他只是(shi)函(han)數定(ding)義的固(gu)定(ding)格式。
2、第(di)八行(xing)fun 是函(han)數的調用(第(di)一種方式)

2、 函數傳參
1、在Shell中,調用函(han)數(shu)(shu)(shu)(shu)時可以向其傳遞參數(shu)(shu)(shu)(shu)。在函(han)數(shu)(shu)(shu)(shu)體內部,通過(guo) $n 的形式來獲取參數(shu)(shu)(shu)(shu)的值,例如(ru),$1表示第(di)一(yi)個參數(shu)(shu)(shu)(shu),$2表示第(di)二個參數(shu)(shu)(shu)(shu)…
2、當n>=10時,需要(yao)使用${n}來獲取參數。

3、 函數調用(第一種方式)
格式:
function_name arg1 arg2 …
1、調用(yong)函(han)(han)數(shu)時,直接寫(xie)函(han)(han)數(shu)名(ming)(ming)即可(ke)(第12行(xing)),參數(shu)則是寫(xie)在函(han)(han)數(shu)名(ming)(ming)的后面(mian),用(yong)空格間隔(ge)
2、以(yi)這種(zhong)直接(jie)調用(yong)函數(shu)的方式,只是將函數(shu)中的標準輸(shu)出(chu)打(da)印出(chu)來,而(er)返回值沒有打(da)印出(chu)來(右圖(tu)為(wei)執行(xing)結果)。

4、 函數調用(第二種方式)
格式:
value_name=`function_name arg1 arg2 … `
echo“$value_name”
1、函數(shu)名及參數(shu)用按(an)鍵esc下(xia)面的兩撇擴起(qi)來。
2、以(yi)這種方(fang)式調用(yong)函數(第(di)11行(xing)),需定(ding)義一個用(yong)戶自定(ding)義變量(liang)去承接函數,即需要打(da)印value_name里的值。
3、value_name內存(cun)放的(de)不是(shi)函數(shu)的(de)返(fan)回(hui)值,而(er)是(shi)函數(shu)中所有標(biao)(biao)準(zhun)輸(shu)出的(de)結果,因此第12行(xing)echo “$ret”,也是(shi)只將函數(shu)中的(de)標(biao)(biao)準(zhun)輸(shu)出打印(yin)(yin)出來,而(er)返(fan)回(hui)值依舊沒有被打印(yin)(yin)出來(右圖(tu)為執行(xing)結果)。

5、 打印函數的返回值
格式一:
function_name arg1 arg2 …
echo “$?”
格式二:
value_name=`function_name arg1 arg2 … `
echo “$?”
1、 使用$?打印函數的返(fan)回值。
2、 $?屬于(yu)系統(tong)預定義(yi)變量,代表(biao)上(shang)一條shell命令的返(fan)回值(zhi),因(yin)此(ci)在shell函數中(zhong),打印(yin)$?的結果,就是return的值(zhi)。

(方式一)

(方式二)