通过Putty执行Linux命令时如何让wait仅在前序任务成功后执行后续任务
解决方案
最简实现(无后台运行需求时推荐)
直接使用&&命令连接符替换你当前写法里的& wait;即可:
run_process.ksh kj_job1 && run_process.ksh kj_job2
&&的逻辑是:仅当前一个命令的退出状态码为0(Unix体系默认0代表执行成功,非0代表执行失败)时,才会触发后一个命令的执行,完全匹配你要求的「仅kj_job1成功才运行kj_job2」的需求。
保留后台运行逻辑的实现
如果你有特定场景需要将kj_job1放到后台运行,可使用如下写法:
run_process.ksh kj_job1 & wait $! && run_process.ksh kj_job2
其中$!指代最近放到后台的进程的PID,wait $!会返回该后台进程的退出状态码,再通过&&判断是否执行kj_job2。
拓展:常用命令连接符说明
;:顺序执行前后两个命令,不校验前序命令的执行结果,也就是你当前写法里生效的逻辑,所以不管kj_job1成功还是失败,kj_job2都会运行&&:前序命令执行成功才运行后序命令||:前序命令执行失败才运行后序命令
内容的提问来源于stack exchange,提问作者khris jones
相关产品推荐
相关产品推荐

