Output-Ergebnisse aus einer Laufenden .sh Skript
Wenn ich ein basic .sh-Datei mit dem folgenden Skript-code:
#!/bin/sh
rm -rf "MyFolder"
Wie Mach ich das laufende script-Datei zeigt die Ergebnisse auf dem terminal wird angezeigt, wenn das Verzeichnis erfolgreich entfernt wurde?
InformationsquelleAutor e-zero | 2012-12-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Fragen zu den Allgemeinen Fall, wie vorgeschlagen, durch deine Frage ist Titel können Sie die Ausführung Ihres Skripts mit
sh -x scriptname
zu sehen, was es tut. Es ist auch durchaus üblich, um zu schreiben, Diagnose-Ausgabe in das Skript selbst, und Steuern Sie mit eine option aus.Wenn Sie dieses Skript ausführen, ohne Optionen, es wird automatisch ausgeführt, wie eine gut erzogene Unix-Dienstprogramm sollte. Wenn man es mit der
-v
option, es wird gedruckt, einige Diagnosen zu standard-Fehler.InformationsquelleAutor tripleee
Lesen Sie mehr über das erstellen einer Sequenz von Rohrleitungen im bash-manual
rm -rf
immer true zurückEs sei denn, es schlägt fehl. (zB, wenn der Benutzer nicht über die Berechtigung, um das Verzeichnis zu entfernen.)
Obwohl es technisch korrekt zu sagen, dies ist eine Folge von pipelines, es ist nur eine Folge von einfachen Befehlen. (Ein einfacher Befehl ist eine triviale pipeline, keine Rohre.)
InformationsquelleAutor aland
In der bash (und andere ähnliche Schalen) die
?
Umgebungsvariable gibt Sie den exit-code des letzten ausgeführten Befehls. So können Sie das tun:UPDATE
Wenn einmal die
rm
Befehl ausgeführt wurde das Verzeichnis nicht vorhanden ist (weil es wurde erfolgreich entfernt wurde, oder weil es nicht existieren, wenn der Befehl ausgeführt wurde) das Skript wird gedruckt 0. Wenn das Verzeichnis vorhanden ist (was bedeutet, dass der Befehl nicht in der Lage, es zu entfernen), dann wird das script print exit-code ungleich 0 ist. Wenn ich verstehe richtig, die Frage, das ist genau die angeforderte Verhalten. Wenn nicht, bitte korrigieren Sie mich.Kein fail an alle, wie bereits in meinem update.
Ich aktualisiert meine Antwort. Ich hoffe es ist klarer jetzt, und für Sie hilfreich.
InformationsquelleAutor Vicent
Den vorherigen Antworten war falsch :
rm
beenden Sie nicht mit Fehler-code - > 0, wenn die dir nicht vorhanden ist.Stattdessen empfehle ich die Nutzung :
Wenn Sie wollen
rm
zu status zurück, entfernen-f
Flagge.Beispiel auf Linux Mint (die dir nicht vorhanden ist):
Falsch. dies ist nicht zuverlässig. Siehe mein edit.
Die option-f ignoriert nicht existierende Dateien und fordert nie. Wenn Sie es ausführen, die direkt mit einem nicht vorhandenen Verzeichnis auf Ihrem terminal erhalten Sie keine Fehlermeldung. Also $? muss wieder eine 0.
Die Tatsache, dass die Ausgabe von dem Befehl rm-rf ist irgendwie unerwartet, Sie bedeutet nicht, daß die $? funktioniert nicht. Es funktioniert perfekt, also bitte Bearbeiten Sie den Teil Ihrer Antwort sagen, dass meine Antwort falsch ist.
InformationsquelleAutor Gilles Quenot