你有两个问题。一种是return
不设置函数的输出,而是设置其退出状态(成功为零,失败为非零)。例如,echo foo
将输出 foo
(加上换行符),但退出状态为0
. 要控制输出,请使用echo
或printf
:
function returnSomething () # should actually be outputSomething
{
echo 5
}
另一个问题是$returnSomething
(or ${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
相反,如果您确实想捕获命令的退出状态,请使用特殊的 shell 参数?
(在命令完成时将其设置为命令的退出状态):
function returnSomething ()
{
return 5
}
function funky ()
{
"$1" # runs argument as a command
echo "$?" # prints its exit status
}
funky returnSomething # prints 5