第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Bash函數(shù)中的返回值

Bash函數(shù)中的返回值

我正在使用bash腳本,我想執(zhí)行一個函數(shù)以打印返回值:function fun1(){  return 34}function fun2(){  local res=$(fun1)  echo $res}當(dāng)我執(zhí)行時fun2,它不會打印“ 34”。為什么會這樣呢?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

盡管bash有一條return語句,但您只能用它指定函數(shù)的自身exit狀態(tài)(介于0和之間的值255,0表示“成功”)。所以return不是您想要的。


您可能希望將return語句轉(zhuǎn)換為echo語句-這樣,可以使用花$()括號捕獲函數(shù)輸出,這似乎正是您想要的。


這是一個例子:


function fun1(){

  echo 34

}


function fun2(){

  local res=$(fun1)

  echo $res

}

獲取返回值的另一種方法(如果只想返回0-255的整數(shù))是$?。


function fun1(){

  return 34

}


function fun2(){

  fun1

  local res=$?

  echo $res

}

另外請注意,您可以使用返回值來使用布爾邏輯一樣fun1 || fun2將只運行fun2,如果fun1返回一個0值。默認返回值是函數(shù)中最后執(zhí)行的語句的退出值。


查看完整回答
反對 回復(fù) 2019-10-24
?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

$(...)捕獲其中包含的命令發(fā)送到stdout的文本。return不輸出到標準輸出。$?包含最后一個命令的結(jié)果代碼。


fun1 (){

  return 34

}


fun2 (){

  fun1

  local res=$?

  echo $res

}


查看完整回答
反對 回復(fù) 2019-10-24
?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

Bash中的函數(shù)與其他語言中的函數(shù)不同;它們實際上是命令。因此,函數(shù)的使用就好像它們是從您的路徑中獲取的二進制文件或腳本一樣。從程序邏輯的角度來看,應(yīng)該沒有任何區(qū)別。


Shell命令是通過管道(也稱為流)連接的,而不是像“真實”編程語言中那樣的基本或用戶定義的數(shù)據(jù)類型。沒有像命令的返回值這樣的東西,可能主要是因為沒有真正的方法來聲明它。它可能出現(xiàn)在手冊頁或--help命令的輸出中,但兩者都是人類可讀的,因此會隨風(fēng)而逝。


當(dāng)命令想要獲取輸入時,它將從其輸入流或參數(shù)列表中讀取該命令。在這兩種情況下,都必須解析文本字符串。


當(dāng)命令想要返回某些內(nèi)容時,它必須將echo其返回到其輸出流。另一種常用的方法是將返回值存儲在專用的全局變量中。寫入輸出流更清晰,更靈活,因為它還可以接收二進制數(shù)據(jù)。例如,您可以輕松返回BLOB:


encrypt() {

    gpg -c -o- $1 # encrypt data in filename to stdout (asks for a passphrase)

}


encrypt public.dat > private.dat # write function result to file

正如其他人在該線程中編寫的一樣,調(diào)用者也可以使用命令替換$()來捕獲輸出。


并行地,該函數(shù)將“返回” gpg(GnuPG)的退出代碼。將退出代碼視為其他語言所沒有的獎勵,或者視您的性格而定,將其作為shell函數(shù)的“ Schmutzeffekt”。按照慣例,此狀態(tài)為0表示成功,否則為1-255范圍內(nèi)的整數(shù)。為了明確起見:(return如exit)只能接受0-255之間的值,而0以外的值不一定是錯誤的,正如經(jīng)常斷言的那樣。


當(dāng)您不提供顯式值時return,狀態(tài)取自Bash語句/函數(shù)/命令中的最后一條命令,依此類推。因此,總有一種狀態(tài),return這只是提供狀態(tài)的一種簡便方法。


查看完整回答
反對 回復(fù) 2019-10-24
  • 3 回答
  • 0 關(guān)注
  • 943 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號