佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 詳解shell 函數(shù)定義與調(diào)用

詳解shell 函數(shù)定義與調(diào)用

熱門標簽:網(wǎng)站排名優(yōu)化 服務外包 百度競價排名 Linux服務器 地方門戶網(wǎng)站 鐵路電話系統(tǒng) AI電銷 呼叫中心市場需求

一、Shell函數(shù)定義格式

shell函數(shù)定義格式,各部分說明如下:

[ function ]等中括號括起來部分----表示可選(即可有可無)

your_function_name部分----為函數(shù)名

your_shell_commands部分----為函數(shù)代碼;shell一般以行為單位,但可以使用“\”換行,也可以在單行內(nèi)使用“;”作為分隔符

return int部分----shell函數(shù)可以有返回值,但只能返回整數(shù)不能返回字符串

[ function ] your_function_name()
{
  your_shell_commands;
  [return int;]
}

二、基本函數(shù)定義與調(diào)用

本節(jié)程序實現(xiàn)函數(shù)定義與調(diào)用,注意調(diào)用函數(shù)是不要使用括號(即如testFun()是不對的),代碼如下:

testFun{
  echo "helloworld!"
}

testFun

運行如下:

三、傳遞參數(shù)調(diào)用

3.1 傳遞參數(shù)沒有空格

本節(jié)程序實現(xiàn)向被調(diào)用函數(shù)傳遞參數(shù),$0是運行該腳本的shell傳遞的參數(shù)從$1開始、傳遞多個參數(shù)是以空格分隔,代碼如下:

testFun(){
  echo $1
}

param="helloworld!"
testFun $param

運行如下:

除了可以通過$n形式獲取第n個參數(shù)外,還可以使用以下幾個寫法:

形式 說明
$# 傳遞到腳本的參數(shù)個數(shù)
$* 以一個單字符串顯示所有向腳本傳遞的參數(shù)
$$ 腳本運行的當前進程ID號
$! 后臺運行的最后一個進程的ID號
$@ 與$*相同,但是使用時加引號,并在引號中返回每個參數(shù)。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最后命令的退出狀態(tài)。0表示沒有錯誤,其他任何值表明有錯誤。

3.2 傳遞參數(shù)有空格

本節(jié)程序實現(xiàn)向被調(diào)用函數(shù)傳遞有空格的參數(shù),我們將上節(jié)“helloworld!”加個空格變?yōu)椤癶ello world!”如下:

testFun(){
  echo $1
}

param="hello world!"
testFun $param

運行如下:

可以看到只有空格前的“hello”被打印了出來,空格后的“world!”并沒被打印出來(實際上空格后的"world!"被識別成了$2)

要傳遞有空格的參數(shù)也簡單,在傳遞時加上雙引號即可(單引號就不被認為是變量了所以不能用單引號),代碼如下:

testFun(){
  echo $1
}

param="hello world!"
testFun "$param"

運行如下:

四、獲取返回值

4.1 返回整型

testFun(){
  echo "helloworld!"
  return 99
}


# 千萬要注意shell并不像其他語言直接返回返回值,其返回值放到$?中,這也是為什么只能返回整型的原因
# 所以這種承接方法是錯誤的,獲取到的值是echo打印的內(nèi)容
# return_value=`testFun`
# 以下才是正確獲取通過return返回的返回值的正確寫法
testFun
echo "the return value is: $?"

4.2 返回字符串

我們在前面一直說shell函數(shù)只能返回整型不能返回字符串,我們試一下強行返回字符串,代碼如下:

testFun(){
  echo "helloworld!"
  return "success"
}

testFun

運行如下,可以看到運行到return處報錯“-bash: return: success: numeric argument required”

所以要通過return返回字符串是沒戲的,我們有兩個變通的方法,第一種是通過$()獲取函數(shù)的所有打印,代碼如下:

testFun(){
  echo "helloworld!"
  echo "success"
}

return_value=$(testFun)
echo "$return_value"

運行如下:

可以看到成功獲取到了‘success“。但同時也可以看到這種做法獲取到的被調(diào)用函數(shù)的所有輸出,單要返回值到得單獨解析一下

另外的一種做法是直接用一個變量,shell的變量都是全局的在被調(diào)用函數(shù)中賦值的變量在調(diào)用函數(shù)處也可獲取,代碼如下:

testFun(){
  echo "helloworld!"
  return_value="success"
}

testFun
echo $return_value

運行如下:

參考:

http://edu.jb51.net/linux/linux-shell-passing-arguments.html

以上就是詳解shell 函數(shù)定義與調(diào)用的詳細內(nèi)容,更多關于Shell 函數(shù)定義與調(diào)用的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PowerShell中簡單的自定義函數(shù)和調(diào)用函數(shù)例子
  • shell自定義函數(shù)及參數(shù)調(diào)用解析
  • 淺談Shell中的函數(shù)
  • Shell中關于時間和日期的函數(shù)總結
  • Linux 在Shell腳本中使用函數(shù)實例詳解
  • shell 使用數(shù)組作為函數(shù)參數(shù)的方法(詳解)
  • Shell使用Epoch進行日期時間轉換和計算的幾個小函數(shù)
  • Linux Shell函數(shù)返回值
  • Linux Shell腳本系列教程(四):使用函數(shù)添加環(huán)境變量

標簽:蘭州 仙桃 湖南 衡水 銅川 黃山 崇左 湘潭

巨人網(wǎng)絡通訊聲明:本文標題《詳解shell 函數(shù)定義與調(diào)用》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    江达县| 隆化县| 汾阳市| 翁牛特旗| 濮阳市| 江油市| 靖江市| 拜泉县| 神木县| 昔阳县| 东辽县| 金乡县| 阜康市| 阿拉善右旗| 嘉祥县| 汶川县| 蓬莱市| 阿拉善左旗| 余姚市| 从化市| 务川| 高台县| 梁平县| 手机| 望都县| 兴仁县| 康乐县| 化隆| 张家港市| 剑川县| 青铜峡市| 香格里拉县| 小金县| 九龙县| 武冈市| 开江县| 沁水县| 长葛市| 壤塘县| 凌云县| 安塞县|