スクリプトでは、ジョブ制御がありません (そして、それを有効にしようとするのはばかげています)
これを聞いたのはこれが初めてで、ジョブ制御の bash.info セクション (第 7 章) を調べたところ、これらのアサーションのいずれについても言及されていませんでした。[更新: man ページは少し良くなり、「典型的な」使用方法、デフォルト設定、および端末 I/O について言及されていますが、スクリプトに対してジョブ制御が特に不適切である理由については言及されていません。]
では、なぜスクリプトベースのジョブ制御が機能しないのでしょうか? また、何が悪い習慣 (別名「ばか」) になるのでしょうか?
編集:問題のスクリプトは、バックグラウンド プロセスを開始し、2 番目のバックグラウンド プロセスを開始してから、最初のプロセスをフォアグラウンドに戻そうとします。これにより、(直接実行されているかのように) 通常のターミナル I/O が得られ、その後、リダイレクトすることができます。スクリプトの外側。バックグラウンドプロセスに対してそれを行うことはできません。
他の質問に対する受け入れられた回答で指摘されているように、ジョブ制御を試行せずにその特定の問題を解決する他のスクリプトが存在します。罰金。そして、お粗末なスクリプトは、ハードコードされたジョブ番号を使用しています — 明らかにまずいです。しかし、ジョブ コントロールが根本的に運命づけられたアプローチであるかどうかを理解しようとしています。まだまだ活躍できそうです…。