すでに存在するファイルを削除するシェルスクリプト 質問する

すでに存在するファイルを削除するシェルスクリプト 質問する

私はファイルにデータを保存する作業を行っています。しかし、スクリプトを実行するたびに、前のファイルに追加されてしまいます。

ファイルが既に存在する場合、そのファイルを削除する方法について助けが必要です。

ベストアンサー1

ファイルが存在するかどうかを確認する必要はありません。削除してみてください。

rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null

ファイルが存在しない場合は 2 番目のコマンドは失敗します (ゼロ以外の終了ステータスを返します) が、最初のコマンドは-f(の省略形--force) オプションにより成功します。状況によっては、これが重要な詳細になる場合があります。

しかし、ファイルに追加している場合、スクリプトが>>を ファイルにリダイレクトするために を使用している可能性が高くなります。>>を に置き換えるだけです>。コードが提供されていないため、判断は困難です。

のようなことも実行できますtest -f /p/a/t/h && rm /p/a/t/hが、これはまったく意味がありません。テストが true を返しても、/p/a/t/h を削除しようとする前に /p/a/t/h が存在しなくなる可能性があります。さらに悪いことに、テストが失敗し、/p/a/t/h が存在しないことを想定している次のコマンドを実行する前に /p/a/t/h が作成されます。これを試みることは典型的な競合状態です。実行しないでください。

おすすめ記事