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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

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

3 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

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


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


這是一個(gè)例子:


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

}

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



查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

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


fun1 (){

  return 34

}


fun2 (){

  fun1

  local res=$?

  echo $res

}



查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
天涯盡頭無(wú)女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

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


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


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


當(dāng)命令想要返回某些內(nèi)容時(shí),它必須將echo其返回到其輸出流。另一種常用的方法是將返回值存儲(chǔ)在專(zhuān)用的全局變量中。寫(xiě)入輸出流更清晰,更靈活,因?yàn)樗€可以接收二進(jìn)制數(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

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


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


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



查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 3 回答
  • 0 關(guān)注
  • 450 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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