インライン シェルで入力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
}
Replace return
with echo
and your code works fine.
コメントから:
return を echo に置き換えると、コードは正常に動作します。- ブレンダー
この$(...)
構文は、そのコマンドがたまたま関数呼び出しであっても、コマンドの出力を提供するように特別に設計されています。関数内の return は、スクリプト全体の exit に似ています。これは、0 から 255 の範囲の整数であるステータスを設定します (これは、関数から値を返すために return が使用される、慣れ親しんだ他の言語とはまったく異なります)。 – Keith Thompson
Bash 関数は、他の言語の関数とは異なります。これらは他のコマンドと同じように動作します。コマンド ライン引数を取り、標準入力から読み取り、標準出力と標準エラーに書き込み、終了ステータスを返すことができます。それらは、厳密に言えば、計算された値を返しません。– チェプナー