URLをカールして次のファイルに出力するスクリプトを作成しています。
curl http://example.com/$1 > $1
含まれていないアイテムを無視する方法はありますか<head>
?もちろん、次のようにすることができます。
web="$(curl http://example.com/$1)"
if $(echo "$web" | grep -q "<head>"); then
printf "$web" > "$1"
fi
しかし、このスクリプトは複数回実行できるため、時間を節約したいと思います。
ベストアンサー1
ファイルに保存してタグが含まれていない場合は、タグを削除してください。
curl "http://example.com/$1" >"$1"
! grep -qF '<head>' "$1" && rm "$1"
またはもう少し複雑にしたい場合は、
if curl "http://example.com/$1" | tee "$1" | ! grep -qF '<head>'
then
rm "$1"
fi
またはみんな最初に取得し、それから生成されたファイルを参照して削除します。
mkdir outdir # assuming this is not pre-existing
# iterates over all positional parameters
for path do
curl "http://example.com/$path" >outdir/"$path"
done
find outdir -type f ! -exec grep -qF '<head>' {} \; -delete
ただし、これはすべての既知のファイルを固定パスの下にインポートしたい場合にのみ機能します。