Bash関数の戻り値 質問する

Bash関数の戻り値 質問する

私は bash スクリプトを使用しており、戻り値を出力する関数を実行したいと考えています。

function fun1(){
  return 34
}
function fun2(){
  local res=$(fun1)
  echo $res
}

を実行してもfun2、「34」が出力されません。なぜでしょうか?

ベストアンサー1

Bash にはreturnステートメントがありますが、これを使用して指定できるのは関数自体のステータス ( から までの値、0 は「成功」を意味します) だけです。exitは必要な状態ではありません。0255return

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のみ実行されます。デフォルトの戻り値は、関数内で実行された最後のステートメントの終了値です。fun2fun10

おすすめ記事