2

A と B という 2 つのシェル スクリプトがあります。A がバックグラウンドで実行を終了するまで、A をバックグラウンドで実行し、B をフォアグラウンドで実行する必要があります。このプロセスを数回実行する必要があるため、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て、A がバックグラウンドにある間に B を何度でも実行し、A が終了するとプロセス全体が次の反復に移動するようにする方法

4

2 に答える 2

3

現在のバックグラウンド プロセスの PID を使用します。

./A.sh &
while ps -p $! >/dev/null; do
    ./B.sh
done
于 2011-11-04T19:15:48.613 に答える
1

私はあなたの大まかなアイデアを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
于 2011-11-04T20:26:04.930 に答える