Shell脚本通过终端执行命令无法并行,需记录各命令退出码到日志
问题原因
当前写法中&的作用范围仅为紧邻的echo $? >> "$log_file"命令,前面的npm测试命令始终在前台串行执行,因此无法达到并行效果。
修正方案
将单条npm执行+退出码写入的逻辑包裹在子shell中,再将整个子shell丢到后台运行即可:
# 第一条测试任务后台运行 (ENV=prod npm run SettingsSuite -- --runid Prod_E2E_$BUILD_NUMBER --APPNAME Prod_E2E --squad ops --track coreServices; echo "SettingsSuite exit code: $?" >> "$log_file") & # 第二条测试任务后台运行 (ENV=prod npm run InventorySuite -- --runid Prod_E2E_$BUILD_NUMBER --APPNAME Prod_E2E --squad ops --track coreServices; echo "InventorySuite exit code: $?" >> "$log_file") & # 等待所有后台任务执行完成 wait
上述写法还增加了命令标识前缀,方便后续排查日志时快速区分不同任务的退出码。
内容的提问来源于stack exchange,提问作者sandeep bagoria
相关产品推荐
相关产品推荐

