如何让Bash脚本中三条Python命令按顺序串行执行
Bash脚本实现命令顺序串行运行的方法
关键分隔符差异说明
Bash对命令的执行顺序控制,完全由命令之间的分隔符决定,对应行为如下:
- 命令末尾加
&:将当前命令放到后台异步运行,不会等待它执行结束就直接启动下一条命令,这是唯一会触发“不等前序结束就跑下一条”的写法 - 命令末尾加
;:等待当前命令完全执行退出(无论成功还是报错),再启动下一条命令,这种写法本身就满足你“第二条等第一条完全结束再启动、第三条等第二条完全结束再启动”的基础要求 - 命令之间用
&&连接:同样会等待前序命令完全退出才启动下一条,额外增加了状态判断——只有前序命令执行成功(返回退出码0),才会启动下一条命令,适合避免前序步骤出错时,后续无效流程继续运行生成错误结果
适配需求的脚本调整
如果你只需要保证命令依次执行,不要求前序失败时中断流程,原脚本不需要任何修改,本身就能正常按顺序运行。
如果你需要更严谨的错误中断逻辑(比如analyze步骤失败了,就不继续跑后续的call、plot步骤),可以把脚本改写为以下形式:
#!/bin/bash python /path/to/someprogramm.py analyze --probes /path/to/myfile.bed --rpkm_dir /path/to/RPKM/ --output /path/to/hdf5/analysis.hdf5 --write_svals /path/to/SVD/singular_values.txt \ && python /path/to/someprogramm.py call --input /path/to/hdf5/analysis.hdf5 --output /path/to/calls.txt \ && python /path/to/someprogramm.py plot --input /path/to/hdf5/analysis.hdf5 --calls /path/to/calls.ng.txt --outputdir /path/to/call_images/ \ && echo "Command sequence finished successfully"
注意:用反斜杠
\做跨行衔接时,要保证反斜杠后面没有任何空格或字符,否则会触发脚本解析错误。
内容的提问来源于stack exchange,提问作者user3224522
相关产品推荐
相关产品推荐

