奇怪的shell脚本错误:无效选项返回:用法:return [n]

时间:2014-01-10 09:45:54

标签: shell debugging command-line

该程序通过匹配书名和书籍作者的用户输入来检查是否存在某个书名。

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]

您可以尝试输入不正确的数据以查看奇怪的错误

我需要帮助解决此问题,谢谢!!!!

1 个答案:

答案 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)。