4

インライン シェルで入力echo $(max 15 2)しても応答がありません。

なぜそうなのですか?

コード:

function max {
  if [ "$1" -eq "$2" ]
  then
    return $1
  else
    if [ "$1" -gt "$2" ]
    then
      return $1
    else
      return $2
    fi
  fi
}
4

2 に答える 2

3

Replace return with echo and your code works fine.

于 2012-09-14T08:34:09.740 に答える
0

コメントから:

  • return を echo に置き換えると、コードは正常に動作します。- ブレンダー

  • この$(...)構文は、そのコマンドがたまたま関数呼び出しであっても、コマンドの出力を提供するように特別に設計されています。関数内の return は、スクリプト全体の exit に似ています。これは、0 から 255 の範囲の整数であるステータスを設定します (これは、関数から値を返すために return が使用される、慣れ親しんだ他の言語とはまったく異なります)。 – Keith Thompson

  • Bash 関数は、他の言語の関数とは異なります。これらは他のコマンドと同じように動作します。コマンド ライン引数を取り、標準入力から読み取り、標準出力と標準エラーに書き込み、終了ステータスを返すことができます。それらは、厳密に言えば、計算された値を返しません。– チェプナー

于 2012-11-02T05:54:17.367 に答える