如何在此 bash 脚本中编写等待并继续的程序

发布于 2024-12-13 18:32:31 字数 361 浏览 3 评论 0原文

我有两个 shell 脚本 A 和 B。我需要在后台运行 A,并在前台运行 B,直到 A 在后台完成执行。我需要重复这个过程几次运行,因此一旦 A 完成,我需要暂停当前迭代并移至下一个迭代。

粗略的想法是这样的:

for((i=0; i< 10; i++))  
do  
./A.sh &

for ((c=0; c< C_MAX; c++))  
do  
./B.sh  
done

continue

done

我如何使用'wait'和'Continue',以便B在A在后台运行时运行尽可能多的次数,并且整个进程移动到A 完成后进行下一次迭代

I have two shell scripts say A and B. I need to run A in the background and run B in the foreground till A finishes its execution in the background. I need to repeat this process for couple of runs, hence once A finishes, I need to suspend current iteration and move to next iteration.

Rough idea is like this:

for((i=0; i< 10; i++))  
do  
./A.sh &

for ((c=0; c< C_MAX; c++))  
do  
./B.sh  
done

continue

done

how do I use 'wait' and 'continue' so that B runs as many times while A is in the background and the entire process moves to next iteration once A finishes

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清眉祭 2024-12-20 18:32:31

使用当前后台进程的PID:

./A.sh &
while ps -p $! >/dev/null; do
    ./B.sh
done

Use the PID of the current background process:

./A.sh &
while ps -p $! >/dev/null; do
    ./B.sh
done
铁轨上的流浪者 2024-12-20 18:32:31

我只是将你的粗略想法转化为 bash 脚本。
实现等待继续机制的核心思想(while ps -p $A_PID >/dev/null; do...)取自@thiton,他之前​​发布了您的问题的答案。

for i in `seq 0 10`
do
  ./A.sh &
  A_PID=$!
  for i in `seq 0 $C_MAX`
  do
    ./B.sh
  done
  while ps -p $A_PID >/dev/null; do
      sleep 1
  done
done

I am just translating your rough idea into bash scripting.
The core idea to implement the wait-continue mechanism (while ps -p $A_PID >/dev/null; do...) is taken from @thiton who posted an answer earlier to your question.

for i in `seq 0 10`
do
  ./A.sh &
  A_PID=$!
  for i in `seq 0 $C_MAX`
  do
    ./B.sh
  done
  while ps -p $A_PID >/dev/null; do
      sleep 1
  done
done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文