这个shell脚本有什么错误

时间:2012-03-12 05:45:02

标签: linux shell unix

我写了以下代码..

installFunction(){

    perl Makefile.PL
    flag1 = $?

    make    
    flag2 = $?

    make install
    flag3 = $?

    make test
    flag4 = $?

    cd ..


    return $flag1 || $flag2 || $flag3 || $flag4
}
if(installFunction != 0)
    then
        echo "installation failure"
        exit
fi  

但是当我运行代码时,我得到以下错误

  

./ install:53:flag1:not found

     

./ install:53:flag2:not found

     

./ install:53:flag3:not found

     

./ install:53:flag4:not found

有人能说出问题是什么吗?

提前致谢!!

3 个答案:

答案 0 :(得分:6)

flag1=$?

注意缺少空格。

http://tldp.org/LDP/abs/html/varassignment.html

<小时/> 正如kev所提到的,您的if声明无效。

installFunction
if [ $? -ne 0 ]
then
        echo "installation failure"
        exit
fi

应该有效。强制性链接:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

答案 1 :(得分:2)

return语句也是错误的:return $((flag1 | flag2 | flag3 | flag4))

答案 2 :(得分:1)

变量分配不正确,man bash并在 PARAMETERS 上阅读。该部分应详细解释。

您的if语句语法不正确,请参阅bash手册,阅读复合命令

如果我理解你的if语句语义,你想检查函数调用的返回代码并验证它是否不为零?您应该调用您的函数,然后使用$?获取返回码。因此,你需要做一些小修改。

最后但并非最不重要的是,您可以通过运行命令sh -n script.sh

来检查shell脚本是否存在语法错误