最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年09月22日 12:05:02   作者:諸子流  
這篇文章主要介紹了shell 函數(shù)定義與調(diào)用的相關(guān)資料,幫助大家更好的理解和學習shell,感興趣的朋友可以了解下

一、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é)程序?qū)崿F(xiàn)函數(shù)定義與調(diào)用,注意調(diào)用函數(shù)是不要使用括號(即如testFun()是不對的),代碼如下:

testFun{
  echo "helloworld!"
}

testFun

運行如下:

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

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

本節(jié)程序?qū)崿F(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é)程序?qū)崿F(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)容,更多關(guān)于Shell 函數(shù)定義與調(diào)用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • shell中長命令的換行處理方法示例

    shell中長命令的換行處理方法示例

    這篇文章主要給大家介紹了關(guān)于shell中長命令的換行處理方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用shell具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • Shell腳本中獲取命令運行結(jié)果的實現(xiàn)

    Shell腳本中獲取命令運行結(jié)果的實現(xiàn)

    本文主要介紹了Shell腳本中獲取命令運行結(jié)果的實現(xiàn),除了我們熟知的管道 | 和args,我們也可以通過獲取命令的運行結(jié)果,本文就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • 實現(xiàn)自動清除日期目錄shell腳本實例代碼

    實現(xiàn)自動清除日期目錄shell腳本實例代碼

    這篇文章主要介紹了實現(xiàn)自動清除日期目錄shell腳本實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • shell監(jiān)控腳本 準備工作分享

    shell監(jiān)控腳本 準備工作分享

    這篇文章主要介紹了在編寫監(jiān)控功能腳本需要做的一些工作,需要的朋友可以參考下
    2013-11-11
  • shell腳本echo輸出不換行功能增強實例

    shell腳本echo輸出不換行功能增強實例

    這個腳本很簡單,就是可以用3種不同的函數(shù)(方法)來實現(xiàn),輸出后不換行
    2016-08-08
  • 詳解linux下tree命令的用法

    詳解linux下tree命令的用法

    tree是一種遞歸目錄列表命令,產(chǎn)生一個深度縮進列表文件,這是彩色的ALA dircolors如果ls_colors設(shè)置環(huán)境變量和輸出是TTY。下面通過本文給大家分享linux下tree命令的用法,感興趣的朋友一起看看吧
    2017-09-09
  • linux?命令中的lynx解析

    linux?命令中的lynx解析

    lynx命令是純文本模式的網(wǎng)頁瀏覽器,不支持圖形、音頻、視頻等多媒體信息,這篇文章主要介紹了linux?命令中的lynx解析,需要的朋友可以參考下
    2024-07-07
  • 詳解Linux使用shell+expect遠程登錄主機

    詳解Linux使用shell+expect遠程登錄主機

    這篇文章主要介紹了詳解Linux使用shell+expect遠程登錄主機的相關(guān)資料,這里提供了詳細的實現(xiàn)步驟,需要的朋友可以參考下
    2017-08-08
  • Linux中rz命令和sz命令使用詳解大全

    Linux中rz命令和sz命令使用詳解大全

    在linux中rz 和 sz 命令允許開發(fā)板與主機通過串口進行傳遞文件了,下面我們就來簡單的介紹一下rz 和 sz 命令實例
    2015-10-10
  • shell 中小括號、中括號及大括號的區(qū)別解析

    shell 中小括號、中括號及大括號的區(qū)別解析

    這篇文章主要介紹了shell 中小括號,中括號,大括號的區(qū)別,針對每種括號給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10

最新評論

比如县| 惠来县| 独山县| 赤壁市| 福泉市| 金川县| 富川| 丰顺县| 神农架林区| 壤塘县| 航空| 平原县| 潜山县| 同仁县| 淮滨县| 平和县| 台南市| 碌曲县| 金湖县| 石家庄市| 双鸭山市| 枣阳市| 永清县| 勐海县| 碌曲县| 龙口市| 青州市| 卓资县| 岳普湖县| 嘉义市| 鹰潭市| 丹巴县| 云浮市| 明星| 墨竹工卡县| 白城市| 保山市| 宿松县| 安多县| 鄂伦春自治旗| 兴安盟|