Ich verwende es, curl
um das HTML einer Website abzurufen. Ich möchte nur die ersten 20 Zeilen abrufen und diese in einer externen Datei speichern. Ich muss ungefähr 10 URLs abrufen und möchte sie alle in derselben Datei speichern. Vorzugsweise mit der URL jeder Datei über den Ergebnissen. Was mir eingefallen ist, ist:
curl http://example.com/url1 | head -20 && curl http://example.com/url2 | head -20 > exportfile
Dies führt jedoch zu zwei Problemen:
- Dadurch wird nur die letzte Seite gespeichert (und wenn ich nach jeder Anweisung > exportfile einfüge, wird die Datei überschrieben
- Dadurch wird der eigentliche Befehl nicht in der Datei gespeichert.
Gibt es eine Möglichkeit, dies wie vorgesehen zum Laufen zu bringen?
Antwort1
Sie können alle Ihre URLs in einer Datei speichern (sagen wir urls.txt
, eine pro Zeile) und sie dann in Ihrem Skript durchlaufen:
#! /bin/bash
# optional, clean up before starting
rm exportfile
while read url ; do
echo "URL: $url" >> exportfile
curl "$url" | head -20 >> exportfile
done < urls.txt
Eines der wichtigsten Dinge ist die Verwendung >>
zum Anhängen >
und Überschreiben.
Antwort2
Versuchen Sie Folgendes (bash):
{ curl http://example.com/url1 | head -20 \
&& curl http://example.com/url2 | head -20; } > exportfile