该程序通过匹配书名和书籍作者的用户输入来检查是否存在某个书名。
function removebook_option()
{
echo -n "Title : "
read title_input2
echo -n "Author: "
read author_input2
checkexist $title_input2 $author_input2
error=$?
echo "$error"
if [ $error != -1 ];then
#removebook
echo "New book title $title_input removed successfully"
else
echo "Book does not exist"
fi
}
function checkexist()
{
counter=0
for x in ${title[@]}
do
for y in ${author[@]}
do
if [ $x == $1 ] && [ $y == $2 ];
then
error=$counter
return "$error"
fi
done
counter=$((counter+1))
done
error=-1
return "$error"
}
title=(foo1 foo2)
author=(bar1 bar2)
removebook_option
我收到一个非常奇怪的错误,其中function checkexist()
返回2而不是-1,当返回值error=-1
第43行:返回:-1:无效选项返回:用法:return [n]
您可以尝试输入不正确的数据以查看奇怪的错误
我需要帮助解决此问题,谢谢!!!!
答案 0 :(得分:2)
你应该返回1或255之间的0或正整数
根据http://tldp.org/LDP/abs/html/exit-status.html#FTN.AEN2974
按惯例,0表示成功,或者整数表示1 - 255 错误。
虽然您可以使用return -- -1
$?
将显示255而不是-1
因为-1超出了有效范围
请参阅http://tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF
超出范围退出值可能导致意外退出代码。出口 大于255的值返回模256的退出代码。例如, 退出3809给出退出代码225(3809%256 = 225)。