91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在shell中定義與調用函數

發布時間:2021-04-13 18:01:00 來源:億速云 閱讀:284 作者:Leah 欄目:開發技術

怎么在shell中定義與調用函數?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、Shell函數定義格式

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

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

your_function_name部分----為函數名

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

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

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

二、基本函數定義與調用

本節程序實現函數定義與調用,注意調用函數是不要使用括號(即如testFun()是不對的),代碼如下:

testFun{
  echo "helloworld!"
}

testFun

運行如下:

怎么在shell中定義與調用函數

三、傳遞參數調用

3.1 傳遞參數沒有空格

本節程序實現向被調用函數傳遞參數,$0是運行該腳本的shell傳遞的參數從$1開始、傳遞多個參數是以空格分隔,代碼如下:

testFun(){
  echo $1
}

param="helloworld!"
testFun $param

運行如下:

怎么在shell中定義與調用函數

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

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

3.2 傳遞參數有空格

本節程序實現向被調用函數傳遞有空格的參數,我們將上節“helloworld!”加個空格變為“hello world!”如下:

testFun(){
  echo $1
}

param="hello world!"
testFun $param

運行如下:

怎么在shell中定義與調用函數

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

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

testFun(){
  echo $1
}

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

運行如下:

怎么在shell中定義與調用函數

四、獲取返回值

4.1 返回整型

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


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

4.2 返回字符串

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

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

testFun

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

怎么在shell中定義與調用函數

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

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

return_value=$(testFun)
echo "$return_value"

運行如下:

怎么在shell中定義與調用函數

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

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

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

testFun
echo $return_value

運行如下:

怎么在shell中定義與調用函數

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

历史| 盘山县| 新昌县| 偃师市| 县级市| 军事| 荥经县| 惠来县| 阿巴嘎旗| 靖远县| 林芝县| 东山县| 宾川县| 洪洞县| 沙洋县| 绥江县| 道真| 绍兴市| 大田县| 九龙县| 文化| 昌平区| 彰武县| 景东| 尉犁县| 图木舒克市| 安庆市| 和龙市| 彭山县| 达州市| 九江县| 定襄县| 靖州| 巩义市| 双江| 文登市| 西贡区| 海阳市| 司法| 南康市| 兖州市|