2012-03-12 83 views
0

我写了下面的代码错误..什么是在这个shell脚本

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:标志1:未找到

./INSTALL:53:FLAG 2:找不到

./INSTALL:53:Flag3相同的:未找到

./INSTALL:53:Flag4的:没有发现

谁能说的问题是什么?

在此先感谢!

+0

无法读取任何东西,请重新格式化。 – ulidtko 2012-03-12 05:46:27

+0

'flag1 = $?''''周围没有空格='' – kev 2012-03-12 05:47:37

+1

'如果'语句无效。 – kev 2012-03-12 05:51:01

回答

1

变量分配不正确,man bash参数读取。该部分应详细解释。

你的if语句语法不正确,在bash的手册,阅读复方如果我理解命令

你的if语句语义,你想从你的函数调用来检查返回代码,并验证其是否不零?您应该调用您的函数,然后使用$?获取返回码。因此,你需要做一些小改动。

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

2

return语句检查语法错误,你的shell脚本也是错误的:return $((flag1 | flag2 | flag3 | flag4))