Ich habe also ein Skript, das, wenn ich ihm zwei Adressen gebe, zwei HTML-Links durchsucht:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
Ich möchte dies senden wget
und dann die Ausgabe in einer Datei namens speichern temp.html
. Ich habe es versucht, aber es funktioniert nicht. Kann mir jemand erklären warum und / oder bitte eine Lösung geben?
#!/bin/bash
url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
wget $url
bash
shell
command-line
LotoLo
quelle
quelle
Antworten:
Sie können Backticks (`) verwenden, um einen Befehl auszuwerten und in der Ausgabe des Befehls zu ersetzen, z.
In deinem Fall:
quelle
$(...)
wird über Backticks bevorzugt .Sie könnten "xargs" verwenden. Ein einfaches Beispiel:
Sie müssten darauf achten, dass xargs sein stdin nicht in zwei oder mehr Aufrufe des Kommans aufteilt ("cat" im obigen Beispiel).
quelle
Sie führen Ihre URL-Zeile nicht aus:
quelle
Anscheinend könnten Sie hier eine Kombination der Antworten verwenden. Ich vermute, Sie möchten Leerzeichen durch die ASCII-Werte in der URL ersetzen. Dazu müssen Sie sie durch "% 20" und nicht nur durch "%" ersetzen. Hier ist eine Lösung, die Ihnen eine vollständige Antwort geben sollte:
Die Backticks geben an, dass der beigefügte Befehl zuerst interpretiert und das Ergebnis an wget gesendet werden soll. Beachten Sie, dass ich das Leerzeichen und% chars im sed-Befehl ignoriert habe, um zu verhindern, dass sie falsch interpretiert werden. Die Option -q für wget verhindert, dass die Ausgabe des Befehls auf den Bildschirm gedruckt wird (praktisch für Skripterstellung, wenn Sie sich nicht um den Status in Arbeit kümmern), und die Option -O gibt die Ausgabedatei an. Wenn Sie die Ausgabe nicht in einer Datei speichern, sondern nur im Terminal anzeigen möchten, verwenden Sie "-" anstelle eines Dateinamens, um "stdout" anzugeben.
quelle
wget akzeptiert auch stdin mit dem
-
switch.Wenn Sie die Ausgabe in einer Datei speichern möchten, verwenden Sie den
-O
Schalter.quelle