1. ホーム
  2. バッシュ

[解決済み】Bash関数の戻り値

2022-03-24 06:41:51

質問

私はbashスクリプトで作業しており、戻り値を表示する関数を実行したい。

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

を実行すると fun2 と表示され、quot;34" と表示されません。なぜこのような現象が起こるのでしょうか。

解決方法は?

Bashには return 文で指定できるのは、関数自身の exit の間の値)。 0255 0は成功の意味)。そのため 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 の値を指定します。 デフォルトの戻り値は、関数内で最後に実行された文の終了値です。