在其他脚本成功执行后执行Shell脚本

ars*_*nal 3 unix linux bash shell

问题陈述:-

我有四个shell脚本,只有在前一个脚本成功执行后才能执行.而我现在正在运行它 -

./verify-export-realtime.sh

sh -x lca_query.sh

sh -x liv_query.sh

sh -x lqu_query.sh
Run Code Online (Sandbox Code Playgroud)

因此,为了使其他脚本在上一个脚本成功之后运行.我需要做类似下面的事情吗?我不确定我是对的吗?如果任何脚本由于任何原因而失败,由于某种原因它会打印为失败 吗?

./verify-export-realtime.sh

RET_VAL_STATUS=$?
echo $RET_VAL_STATUS
if [ $RET_VAL_STATUS -ne 0 ]; then
echo "Failed due to some reason"
exit
fi

sh -x lca_query.sh

RET_VAL_STATUS=$?
echo $RET_VAL_STATUS
if [ $RET_VAL_STATUS -ne 0 ]; then
echo "Failed due to some reason"
exit
fi

sh -x liv_query.sh

RET_VAL_STATUS=$?
echo $RET_VAL_STATUS
if [ $RET_VAL_STATUS -ne 0 ]; then
echo "Failed due to some reason"
exit
fi


sh -x lqu_query.sh
Run Code Online (Sandbox Code Playgroud)

Chr*_*odd 5

shell为操作员提供了&&这样做.所以你可以写:

./verify-export-realtime.sh && \
sh -x lca_query.sh && \
sh -x liv_query.sh && \
sh -x lqu_query.sh
Run Code Online (Sandbox Code Playgroud)

或者你可以摆脱行continuation(\)并将其全部写在一行上

./verify-export-realtime.sh && sh -x lca_query.sh && sh -x liv_query.sh && sh -x lqu_query.sh
Run Code Online (Sandbox Code Playgroud)

如果你想知道它有多远,你可以添加仅设置变量的额外命令:

done=0
./verify-export-realtime.sh && done=1 &&
sh -x lca_query.sh && done=2 &&
sh -x liv_query.sh && done=3 &&
sh -x lqu_query.sh && done=4
Run Code Online (Sandbox Code Playgroud)

最后的值$done告诉您成功完成了多少命令. $?将被设置为上次命令运行的退出值(失败的那个),或者0如果全部成功