私は bash スクリプトを使用しており、戻り値を出力する関数を実行したいと考えています。
function fun1(){
return 34
}
function fun2(){
local res=$(fun1)
echo $res
}
を実行してもfun2
、「34」が出力されません。なぜでしょうか?
ベストアンサー1
Bash にはreturn
ステートメントがありますが、これを使用して指定できるのは関数自体のステータス ( から までの値、0 は「成功」を意味します) だけです。exit
は必要な状態ではありません。0
255
return
return
ステートメントを ステートメントに変換したい場合がありますecho
。そうすれば、関数の出力を中括弧を使用してキャプチャできるため$()
、まさにそれが必要なようです。
次に例を示します。
function fun1(){
echo 34
}
function fun2(){
local res=$(fun1)
echo $res
}
戻り値を取得する別の方法 (0 ~ 255 の整数を返すだけの場合) は、次のとおりです$?
。
function fun1(){
return 34
}
function fun2(){
fun1
local res=$?
echo $res
}
また、戻り値を使用してブール論理を使用できることに注意してください。たとえば、 は、 が値以外を返す場合にfun1 || fun2
のみ実行されます。デフォルトの戻り値は、関数内で実行された最後のステートメントの終了値です。fun2
fun1
0