这已经讨论过,但我有一个更加不同的问题:
我有一个需要使用$@
作为参数调用的函数。
如果我放var=$(function $@)
,我只会收到函数操作的每一行的错误。
与此同时,我使用了一个workaroud:
function $@
var=$?
但是,只要函数返回“成功”或“失败”,这就有效。 有什么想法吗?
代码:
function()
{
if [ $1 -gt $x ]
then
return 0
fi
if [ $1 -eq $x ]
then
return 1
fi
if [ $1 -lt $x ]
then
return 2
fi
}
我想存储在我的变量0,1或2中。 为此:
menu ()
{
if [ $# -gt 5 ] || [ $# -lt 1 ]
then
echo "Error! Script is: " $0
return
fi
echo "Insert reference number: "
read x
while [ $# -gt 0 ]
do
rez=$(function $@)
if [ $rez -eq 0 ]
then
echo "Nr >!" $1
fi
if [ $rez -eq 1 ]
then
echo "Nr =!" $1
fi
if [ $rez -eq 2 ]
then
echo "Nr <!" $1
fi
shift
done
}
答案 0 :(得分:1)
也许使用elif
s,这样您就不会收到多个返回的值(也是一个案例陈述可能是更好的解决方案)。
var=$(function $@ >/dev/null 2>&1; echo $?)
我应该做你想做的事吗?