子shell脚本的unix脚本中的错误处理

时间:2016-04-13 14:05:18

标签: shell unix ksh informatica

我有一个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

但是,当我尝试此代码时,我无法返回失败状态。

1 个答案:

答案 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.

我还缩进了我的代码,所有经验丰富的程序员都会这样做。