我有一个wrapper.sh脚本,它调用另一个脚本run_workflow.sh,最终调用工作流程。我想处理run_wrklow.sh的错误...即,如果工作流成功执行,那么我需要调用另一个脚本run_workflow2.sh来触发另一个工作流。
以下是示例代码...请建议我如何处理错误
wrapper.sh
sh run_workflow.sh #trigger workflow1
if [ $? -ne 0 ]; then
echo "Workflow Failed"
else
echo "Wrokflow Success"
sh run_workflow2.sh #trigger workflow2
if [ $? -ne 0 ]; then
echo "Workflow2 Failed"
else
echo "Workflow2 Success"
fi
fi
但是,当我尝试此代码时,我无法返回失败状态。
答案 0 :(得分:1)
这是我的建议。您不需要显式测试$?
,语法是if
后跟命令([
是test
命令)。
exit_value=1 # default failure
if sh run_workflow.sh #trigger workflow1
then
echo "Wrokflow Success"
if sh run_workflow2.sh #trigger workflow2
then
echo "Workflow2 Success"
exit_value=0
else
echo "Workflow2 Failed" >&2
fi
else
echo "Workflow Failed" >&2
fi
exit $exit_value
请注意,我将错误消息回显给stderr
(>&2
)。 exit
命令返回错误,该错误是0到255之间的整数。按照惯例,我们在成功时返回0,在出错时返回1.
我还缩进了我的代码,所有经验丰富的程序员都会这样做。