Überprüfung des Rückgabewerts von wget [if]
Ich Schreibe ein Skript zum herunterladen einer Reihe von Dateien, und ich will es informieren, wenn eine bestimmte Datei nicht vorhanden ist.
r=`wget -q www.someurl.com`
if [ $r -ne 0 ]
then echo "Not there"
else echo "OK"
fi
Aber es gibt den folgenden Fehler bei der Ausführung:
./file: line 2: [: -ne: unary operator expected
Was ist falsch?
InformationsquelleAutor der Frage Igor | 2010-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
$r
ist die text-Ausgabe von wget (die Sie aufgenommen haben, mit backticks). Zugriff auf den return-code, verwenden Sie die$?
variable.InformationsquelleAutor der Antwort Andrew Medico
Andere haben richtig geschrieben, dass Sie verwenden können
$?
um die jüngsten exit-code:Diese können Sie erfassen sowohl die Standardausgabe und der exit-code. Wenn Sie don ' T eigentlich egal, was er druckt, können Sie testen Sie es einfach direkt:
Und wenn Sie wollen, unterdrücken Sie die Ausgabe:
InformationsquelleAutor der Antwort Cascabel
$r
leer ist, und daher Ihr Zustand wirdif [ -ne 0 ]
und es scheint, als ob-ne
verwendet wird als unärer operator. Versuchen Sie dies:BEARBEITEN Als Andrew erklärte vor mir, backticks Rückgabe der standard-Ausgabe während
$?
gibt den exit-code der letzten operation.InformationsquelleAutor der Antwort Bolo
konnte man nur
InformationsquelleAutor der Antwort kSiR
Ich versuche alle Lösungen ohne Glück.
wget ausführt, die in einem nicht-interaktiven Weise. Dies bedeutet, dass wget die Arbeit im hintergrund und Sie können nicht fangen de return-code $?.
Einer Lösung zu verarbeiten "--server-response" - Eigenschaft, auf der Suche http-Statuscode 200
Beispiel:
Hinweis: wget brauchen einige Zeit, sein Werk zu Ende, deshalb Stelle ich "sleep 5". Dies ist nicht der beste Weg, dies zu tun, aber funktionierte ok für die Lösung testen.
InformationsquelleAutor der Antwort kazzikazzi
Beste Weg, um zu erfassen das Ergebnis von wget und überprüfen Sie auch den Anruf-status
Diese Weise können Sie überprüfen Sie den status von wget sowie speichern der Daten-Ausgabe.
Wenn der Anruf erfolgreich ist, verwenden Sie die Ausgabe gespeichert
Sonst wird es mit folgendem Fehler beendet wget versagt
InformationsquelleAutor der Antwort Anshul Sharma