STDOUTリダイレクト時にエラーが発生した場合、ファイルを上書きしないことも可能ですか?

STDOUTリダイレクト時にエラーが発生した場合、ファイルを上書きしないことも可能ですか?

このようなコマンドに単純な構文エラーがあります。 Unix/Linux ホストで実行する必要があります。

$ echo "first string $PATH" > out.lst
$ ECHO second string %PATH% > out.lst

最初の行は成功して出力ファイルを埋め、2行目は失敗し、以前に入力されたファイルを空にします。

ファイルを上書きするために出力されるいくつかのコマンドを呼び出すときにエラーが発生した場合に備えて、ファイルの内容を保存する方法を見つけようとしています。

ユースケースは少し奇妙です。私は基本的なオペレーティングシステム(おそらくLinuxまたはWindows)でコマンドを呼び出すように設計されたOracle SQL * Plus用の移植可能なSQLスクリプトを作成しようとしています。オペレーティングシステムを検出できないため、両方のプラットフォームに対してコマンドを呼び出して例外を発生させないことで動作するよう努めています。

Windowsでは、両方の行が成功し、2行目が最初の行を上書きします。 Linuxでは、2行目は失敗しますが、ファイルの内容を保存したいと思います。

ベストアンサー1

を使用すると、>実際のリダイレクトが発生する前にファイルは常に空になります。>>を使用して、同じ宛先に後続のリダイレクトを関連付けることができます。

おすすめ記事