回答:
wget
URLが見つからない場合、ゼロ以外の終了ステータスを返すため、失敗時にremoveコマンドを追加できます。
wget "url" -O file || rm -f file
または、一時ファイルを作成し、成功したい場合にのみ移動します:
wget "url" -O /tmp/wget && mv /tmp/wget file
2番目の方法には、障害発生時に既存のファイルを削除しないという利点がありman tempfile
ますが、複数のインスタンスを並行して実行している場合は、必ず一意の一時名を使用してください(を参照)。
コメントに書かれているwget -O
ように、エラーに関係なく常にファイルに書き込むシェルリダイレクトのようなものです。
curl -f
代わりに使用できます:
curl -f http://nonexistent/file.jpg -o localfile.jpg
ファイルの取得中にエラーが発生しても、ローカルファイルにはアクセスしません。
正しい構文は
wget "url" -O file
大文字のOに注意してください。-oオプションは、ログファイルを書き込むようにwgetに指示します。そのため、障害が発生した場合でも常に書き込まれます。