Merkwürdiges Ergebnis beim Initialisieren einer Variable mit der Ausgabe von „git describe“

Merkwürdiges Ergebnis beim Initialisieren einer Variable mit der Ausgabe von „git describe“

Aus irgendeinem Grund wird diese Zuweisung OUT=$(git describe HEAD)beispielsweise auf die Standardausgabe gedruckt:fatal: No names found, cannot describe anything.

Ist das ein normales Verhalten? Warum passiert das bei anderen Befehlen nicht?

Antwort1

Das ist eigentlich stderrAusgabe, nicht stdout. Wenn Sie einen Befehl von einem interaktiven Terminal ausführen, sind sowohl als auch so stdouteingestellt stderr, dass sie zum Terminal gehen.

Wenn Sie die stderrAusgabe in Ihrer Variable haben möchten (was wahrscheinlich nicht der Fall ist, aber egal), leiten Sie sie stdoutfolgendermaßen um:

OUT=$(git describe HEAD 2>&1)

Oder wenn Sie nicht möchten, dass die Person, die Ihr Skript ausführt, diese Ausgabe sieht stderr, löschen Sie sie wie folgt:

OUT=$(git describe HEAD 2>/dev/null)

verwandte Informationen