运行作业时,将执行脚本。它应该以代码2退出,但它以代码0退出。
在脚本中我有:
ssh User@$myHost ant start
if [ ! $? = 0 ] ; then
echo "*** Failed to start the application."
exit 2
fi
我进入控制台:
*** Failed to start the application.
*** rm -rf /opt/hudson/node2/Appi/*
*** exit 0
Finished: SUCCESS
它没有退出代码2,因为它应该......但它回声“无法启动应用程序。”
有什么想法吗?
由于
答案 0 :(得分:1)
嗯,首先,$? = 0
是一个字符串比较。您应该使用$? -eq 0
进行真正的算术比较。
其次,rm -rf
来自哪里?它不在您提供的脚本中。是否有另一个执行Shell 构建步骤与该命令?
请粘贴整个脚本
基于这些假设,没有看到完整的脚本:
# some stuff
# ...
# call second script, store exit code
./second_script.sh
retVal=$?
# Handle exit code of second script
if [ ! $retVal -eq 0 ]; then
echo "** Second script failed, so I am failing too with same code"
exit $retVal
fi
# some more stuff
# ...
rm -rf /opt/hudson/node2/Appi/*
exit 0
ssh User@$myHost ant start
if [ ! $? -eq 0 ] ; then
echo "*** Failed to start the application."
exit 2
fi
答案 1 :(得分:0)
您没有提供完整的脚本代码,因此无法猜测您在做什么, 但是你可以实施一个解决方案。
管理一个包含退出值值的变量,并在脚本末尾写入exit $VAR
,以便返回退出值。
示例:
RET_VAL=0 # Default return value is 0
ssh User@$myHost ant start
if [[ $? -ne 0 ]] ; then # Your script is not correct here.
echo "*** Failed to start the application."
RET_VAL=2
fi
....
# Execute whatever you want and manage value of RET_VAL according to results.
...
return $RET_VAL # This must be last statement of your jenkins configuration script.
请更正脚本中的错误,如@Slav的回答中所述。