bashでforループを破るが、繰り返しが完了した後にのみ可能ですか?

bashでforループを破るが、繰り返しが完了した後にのみ可能ですか?

中断/停止する方法はありますか?~のため-loop bash、しかし後ろに現在の繰り返しが完了しました。 「サイ」完璧そしてする

~のため- 1つのコマンドを使用して複数のディレクトリを繰り返すことは、完了が許可されていない限り破壊的である可能性があります。したがって、あるディレクトリが完了し、次のディレクトリが起動する前にコマンドを停止したいと思います。

sleep(はい、以前またはreadコマンドを追加できることを知っています。完璧- しかし、私いいえ、ループはすでに実行中です...)

ベストアンサー1

~のためすでに実行中: コマンドが次のようになるとします。プログラムだから子供の頃に走ったプロセススクリプト(またはその一部)を実行するシェルの下でそしてスクリプトは入力のためにheredocまたはherestringを提供しません。またはその入力を読み込んだり、少なくともバッファリングして停止したりできます。〜の後プロセス終わる通過:

  • kill -STOPシェル(だから何もしません。後ろに現在のコマンド)
  • 子プロセスが完了してゾンビ状態になるまで待ちます。
  • kill -KILLシェル

root(もちろん、すべて同じユーザーまたは別のシェルで実行されます。)プリンシパルが各do ... done反復で複数のタスクを実行している場合、そのタスクは後でのみキャプチャされます。そのプログラムが得られるのにリアルタイムで十分に長い時間がかかるプログラム。-STOPこのプログラムは反復の最後のプログラムでも、そうでない場合もあります。

一部(多くの場合)では、kill -KILL単にシェルを前処理して、シェルが通常どおりサブアイテムをクリーンアップするのを防ぎ、サブアイテムを実行して最終的に収穫するようにしますinit(またはシステムがそれに対応するアイテム)。しかし、可能子にいくつかのI / Oエラー、環境の違い、エラー、または孫の変更を見させ、回避しようとする「破壊的な」結果を引き起こす可能性があります。

おすすめ記事