我可以返回1或0从嵌套函数返回并检查它是否有错误。
two()
{
if [ $1 = "right" ]; then
return 0
else
return 1
fi
}
one()
{
return $(two $1)
}
var="right"
if one $var; then
echo OK for $var
else
echo ERROR for $var
fi
var="wrong"
if one $var; then
echo OK for $var
else
echo ERROR for $var
fi
这给了我:
$ sh error.sh
OK for right
ERROR for wrong
但是当我尝试传递更多参数时,它就不起作用了。
two()
{
echo info: $2
if [ $1 = "right" ]; then
return 0
else
return 1
fi
}
one()
{
return $(two $1 $2)
}
var="right"
info="something"
if one $var $info; then
echo OK for $var
else
echo ERROR for $var
fi
var="wrong"
if one $var $info; then
echo OK for $var
else
echo ERROR for $var
fi
我以完全相同的方式传递参数。
$ sh error.sh
error.sh: line 13: return: info:: numeric argument required
ERROR for right
error.sh: line 13: return: info:: numeric argument required
ERROR for wrong
我还尝试了以下方法:
two()
{
echo info: $2
if [ $1 = "right" ]; then
return 0
else
return 1
fi
}
one()
{
info="something"
return $(two $1 $info)
}
var="right"
if one $var; then
echo OK for $var
else
echo ERROR for $var
fi
var="wrong"
if one $var; then
echo OK for $var
else
echo ERROR for $var
fi
也:
...
one()
{
return $(two $1 "something")
}
...