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