linux – 如何等待第一个命令完成?

linux – 如何等待第一个命令完成?,第1张

概述我正在用bash编写一个脚本,它在内部调用两个bash脚本.第一个脚本包括在后台运行的不同测试,第二个脚本打印第一个脚本的结果. 当我一个接一个地运行这两个脚本时,有时会在第一个脚本结束之前执行第二个脚本,这会打印出错误的结果. 我正在使用source命令运行这两个脚本.还有更好的建议? source ../../st_new.sh -basedir $STRESS_PATH -instances 我正在用bash编写一个脚本,它在内部调用两个bash脚本.第一个脚本包括在后台运行的不同测试,第二个脚本打印第一个脚本的结果.

当我一个接一个地运行这两个脚本时,有时会在第一个脚本结束之前执行第二个脚本,这会打印出错误的结果.

我正在使用source命令运行这两个脚本.还有更好的建议?

source ../../st_new.sh -basedir $STRESS_PATH -instances $INSTANCES source ../../results.sh
解决方法 Shell脚本,无论它们如何执行,都会在另一个之后执行一个命令.因此,在st_new.sh的最后一个命令完成后,您的代码将执行results.sh.

现在有一个特殊的命令使这个混乱:&

cmd &

表示:“启动一个新的后台进程并在其中执行cmd.启动后台进程后,立即继续执行脚本中的下一个命令.”

这意味着&不等待cmd做它的工作.我的猜测是st_new.sh包含这样的命令.如果是这种情况,那么您需要修改脚本:

cmd &BACK_PID=$!

这将新后台进程的进程ID(PID)放在变量BACK_PID中.然后,您可以等待它结束:

while kill -0 $BACK_PID ; do    echo "Process is still active..."    sleep 1    # You can add a timeout here if you wantdone

或者,如果您不想要任何特殊的处理/输出

wait $BACK_PID

请注意,某些程序在运行时会自动启动后台进程,即使您省略了&amp ;.检查文档,他们通常可以选择将PID写入文件,或者您可以使用选项在前台运行它们,然后使用shell的&命令改为获取PID.

总结

以上是内存溢出为你收集整理的linux – 如何等待第一个命令完成?全部内容,希望文章能够帮你解决linux – 如何等待第一个命令完成?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存