2 つの問題があります。1 つは、関数returnの出力ではなく、その終了ステータス(成功の場合はゼロ、失敗の場合はゼロ以外) を設定するものです。たとえば、 (改行echo fooを加えて)出力 fooしますが、終了ステータスは0です。出力を制御するには、echoまたはを使用しprintfます。
function returnSomething () # should actually be outputSomething
{
echo 5
}
もう 1 つの問題は、$returnSomething(または${returnSomething}) が という名前の変数の値を与えることですreturnSomething。
x=5 # sets the variable x
echo "$x" # outputs 5
コマンドの出力をキャプチャするには、表記を使用します$(...)(または`...`、後者の方がややこしいです)。そう:
function funky ()
{
echo "$( "$1" )"
}
funky returnSomething # prints 5
あるいは単に:
function funky ()
{
"$1" # runs argument as a command
}
funky returnSomething # prints 5
対照的に、コマンドの終了ステータスを取得したい場合は、特別なシェル パラメータを使用します?(コマンドの完了時にコマンドの終了ステータスに設定されます)。
function returnSomething ()
{
return 5
}
function funky ()
{
"$1" # runs argument as a command
echo "$?" # prints its exit status
}
funky returnSomething # prints 5