Frage

Ich mache ein Skript, das einen vordefinierten Satz von Daten behandelt, in eine Datei ausgibt. Ich möchte eine Warnung an Pop-up, wenn ein Datum (die in jedem Satz immer „Regular“ ist, dass ich Zugang zu gehabt haben) unterscheidet die besagt, dass dieser Wert nicht behandelte (da ich nicht weiß, wie er die Daten betrifft). Soll ich diese Warnung ausgegeben stderr oder stdout?

War es hilfreich?

Lösung

Wenn ich die Ausgabe dieses Skripts gespeichert (das heißt stdout nur), so dass ich es später verarbeiten könnte, würde diese Warnung stören, wie die Ausgabe analysiert wird? Außerdem, wenn Ausgang an einem anderen Prozess geleitet wird, soll die Warnung auf dem Terminal angezeigt, so dass der Anwender sofort sieht.

Aus diesen Gründen in der Regel Du Ausgabe Warnungen an stderr.

Andere Tipps

Die Warnung auf stderr gehen sollte.

Zusätzlich zu den von anderen präsentierten Punkten (was Parsing-Fehler für nachgelagerte Prozesse und Ausblenden der Fehler vom Benutzer an der Konsole), gibt es eine Frage der Flexibilität.

Wenn der Benutzer nicht die Warnung von stderr in einem nachgeschalteten Prozess gehen will, dass stdout wird das Parsen, sie müssen nichts Besonderes tun.

your_script | downstream_process

Wenn der Benutzer die Warnung von stderr will einen nachgeschalteten Prozess zu gehen, die stdout und stderr analysieren wird, kann der Benutzer 2 verwenden> & 1 stderr in stdout zu umleiten.

your_script 2>&1 | downstream_process

Wenn Sie die Ausgabe beiden Warnungen und alle normalen Daten an stdout, haben der Benutzer keine gute Möglichkeit, die Warnungen aus den Daten zu trennen, ohne alles Parsen. So sendet die Warnungen an stderr gibt Ihrem Skript mehr Flexibilität als auch.

Die eigentliche Frage ist: wenn jemand die Ausgabe des Skripts in eine Datei umleiten, würden Sie die Warnung in der Datei platziert werden sollen, oder an den Benutzer gerichtet

?

Wenn Sie den Benutzer erwar einige Maßnahmen als Folge der Warnung zu nehmen, sollte es zu STDERR gehen. Wenn einige Downstream-Skript durch die Warnung zu stolpern dürfte, sollte es zu STDERR gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top