0

我可以返回10从嵌套函数返回并检查它是否有错误。

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")
}
...
4

0 回答 0