我写了以下代码..
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
有人能说出问题是什么吗?
提前致谢!!
答案 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