私は以下を達成する方法を探しています。
- 生成するように設計されたいくつかのコマンドを実行します。
foo.out
foo.out.tmp
ターゲットコマンドが最終インストールとfoo.out
同じ一時ファイルで実際に機能するようにソリューションが置き換えられました。foo.out
- プロセスが終了しました:
- プロセスが終了コード0で終わると、
mv -f foo.out.tmp foo.out
- そうでない場合は、
foo.out.tmp
そのままにしておくか、ジャンクファイルにすることができますので削除してください。
- プロセスが終了コード0で終わると、
私は見た失敗したコマンドのリダイレクトされた出力ファイルを消去するfoo.1.out, foo.2.out, foo.3.out, ...
ただし、これはstdoutリダイレクトに依存し、複数のfoos()を生成するいくつかのコマンドがあります。
作成する必要がある場合は、サブプロセスを実行する前にコマンドラインに入力してからfoo.out[, ...]
終了コードを確認するか、呼び出しを傍受してパラメータを変更する魔法を実行できる一種のラッパースクリプトを想像できます。sed
wait
LD_PRELOAD
open
私のユースケースでは、一時ファイルを削除することも完全に満足です。 Dockerコンテナといくつかの奇妙なオーバーレイマウントオプションを使用して、失敗時に全体の出力ボリュームが消える方法を考えることはできません。
かなり現代的なLinux(カーネル4.x)で役に立つなら。