I can return 1
or 0
from a nested function and check for it as an error.
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
This give me:
$ sh error.sh
OK for right
ERROR for wrong
But when I try to pass more parameters, it won't work.
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
I'm passing parameters exactly the same way.
$ 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
I've also tried the following:
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
As well as:
...
one()
{
return $(two $1 "something")
}
...