shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)(不帶返回值和帶返回值)
一、函數(shù)B調(diào)用不帶返回值的函數(shù)A
新建文件,命名為 test.sh,添加如下代碼:
#!/bin/bash # 即將被調(diào)用的函數(shù)A function A(){ a="aaa" echo $a } # 函數(shù)B,直接調(diào)用A function B(){ A echo "bbb" } B
命令行中通過(guò)sh test.sh
執(zhí)行結(jié)果:
二、函數(shù)B調(diào)用帶返回值的函數(shù)A,并接收函數(shù)A的返回值進(jìn)行輸出
如果函數(shù)A有return,是不是在上面例子的基礎(chǔ)上,把A函數(shù)加多一個(gè)return就可以了呢?那么我們來(lái)試一下,代碼如下:
#!/bin/bash # 即將被調(diào)用的函數(shù)A function A(){ a=10 return $a } # 函數(shù)B function B(){ a=`A` # 注意,這里不能直接寫(xiě)成a=A echo $a } B
命令行執(zhí)行sh test.sh
查看執(zhí)行結(jié)果:
等等,為什么結(jié)果輸出為空呢?原來(lái)shell中調(diào)用帶返回值的函數(shù)之后,返回值自動(dòng)保存在$?中,所以將函數(shù)B改成如下即可:
#!/bin/bash # 即將被調(diào)用的函數(shù)A function A(){ a=10 return $a } # 函數(shù)B function B(){ a=`A` echo $? # 注意:這里要用英文的?,不能用中文的? } B
查看執(zhí)行結(jié)果:
然而,題主遇到返回結(jié)果并不是期望結(jié)果的情況。代碼如下:
#!/bin/bash # 即將被調(diào)用的函數(shù)A function A(){ a="aaa" return $a } # 函數(shù)B function B(){ a=`A` echo $? echo "bbb" } B
命令行執(zhí)行sh test.sh
查看結(jié)果:
這是什么意思呢?為什么是255,而不是期望的結(jié)果“aaa”?原因是shell中用return的話,return的值只能為整形,其它非整形的,如想要直接return是獲取不到的。
那么,該如何解決該問(wèn)題呢?代碼如下:
#!/bin/bash # 即將被調(diào)用的函數(shù)A function A(){ a="aaa" echo $a } # 函數(shù)B function B(){ a=`A` echo $a echo "bbb" } B
查看結(jié)果:
怎么樣?居然不用return字段,很奇怪吧?shell的語(yǔ)法就是這么特立獨(dú)行。至此,問(wèn)題得到解決。
到此這篇關(guān)于shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)(不帶返回值和帶返回值)的文章就介紹到這了,更多相關(guān)shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux下使用ssh遠(yuǎn)程執(zhí)行命令批量導(dǎo)出數(shù)據(jù)庫(kù)到本地
這篇文章主要介紹了linux下使用ssh遠(yuǎn)程執(zhí)行命令批量導(dǎo)出數(shù)據(jù)庫(kù)到本地,需要的朋友可以參考下2015-04-04使用Bash Shell獲取文件名和目錄名的簡(jiǎn)單方法
這篇文章主要介紹了使用Bash Shell獲取文件名和目錄名的簡(jiǎn)單方法,解析路徑是通常用Shell來(lái)實(shí)現(xiàn)的基本功能之一,需要的朋友可以參考下2015-07-07使用shell檢查并修復(fù)mysql數(shù)據(jù)庫(kù)表的腳本
這篇文章主要介紹了使用shell檢查并修復(fù)mysql數(shù)據(jù)庫(kù)表的腳本,需要的朋友可以參考下2014-03-03shell腳本實(shí)現(xiàn)ftp上傳下載文件功能
這篇文章主要介紹了shell腳本實(shí)現(xiàn)ftp上傳下載文件功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08shell 腳本中常用的內(nèi)置變量(Bash 內(nèi)置變量)
在 Bash 解釋器中,內(nèi)置了許多變量,這些變量的功能是解釋器自帶的,我們?cè)诰帉?xiě)shell腳本時(shí)如果能靈活的使用它們,對(duì)腳本的編寫(xiě)效率以及差錯(cuò)大有幫助, 下面一一介紹這些變量,一起看看吧2021-05-05linux使用update-alternatives切換java版本
這篇文章主要介紹了linux使用update-alternatives切換java版本的相關(guān)資料,需要的朋友可以參考下2017-04-04