Da ich in einem Kommentar printf
empfohlen habe, sollte ich wahrscheinlich einige Beispiele für dessen Verwendung geben (obwohl ich für das Drucken einer Verwendungsnachricht eher die Antworten von Dennis oder Chris verwenden würde). printf
ist etwas komplexer zu verwenden als echo
. Das erste Argument ist eine Formatzeichenkette, in der Escape-Sequenzen (wie \n
) immer interpretiert werden; sie kann auch Formatanweisungen enthalten, die mit %
beginnen und kontrollieren, wo und wie zusätzliche Argumente darin eingeschlossen werden. Hier sind zwei verschiedene Ansätze für die Verwendung als Verwendungsnachricht:
Zunächst könnten Sie die gesamte Nachricht in der Formatzeichenkette einschließen:
printf "Verwendung: up [--level | -n ][--help][--version]\n\nFehlerberichte an: \nup Homepage: \n"
Beachten Sie, dass im Gegensatz zu echo
das abschließende Zeilenumbruchzeichen explizit eingeschlossen werden muss. Auch wenn die Nachricht zufällig einige %
-Zeichen enthält, müssten sie als %%
geschrieben werden. Wenn Sie die Bugreport- und Homepage-Adressen einschließen möchten, können sie ganz natürlich hinzugefügt werden:
printf "Verwendung: up [--level | -n ][--help][--version]\n\nFehlerberichte an: %s\nup Homepage: %s\n" "$bugreport" "$homepage"
Zweitens könnten Sie einfach die Formatzeichenkette verwenden, um jede zusätzliche Argument auf einer separaten Zeile zu drucken:
printf "%s\n" "Verwendung: up [--level | -n ][--help][--version]" "" "Fehlerberichte an: " "up Homepage: "
Bei dieser Option ist das Hinzufügen der Bugreport- und Homepage-Adressen ziemlich offensichtlich:
printf "%s\n" "Verwendung: up [--level | -n ][--help][--version]" "" "Fehlerberichte an: $bugreport" "up Homepage: $homepage"
6 Stimmen
Wenn Sie eine Verwendungsnachricht als Antwort auf einen falschen Aufruf ausgeben, senden Sie diese normalerweise an den Standardfehlerausgang anstelle des Standardausgangs, mit
echo >&2 ...
3 Stimmen
@MarkReed Die Verwendungsnachricht wird ausgegeben, indem
--help
eingegeben wird (was standardmäßig ausgegeben werden sollte).3 Stimmen
Für andere, die vorbeikommen, gibt es weitere Informationen zu "here documents": tldp.org/LDP/abs/html/here-docs.html
1 Stimmen
Überprüfen Sie die
printf
-basierte Lösung von Gordon Davidson. Trotz des Schattens derecho
- odercat
-basierten Ansätze scheint es viel weniger ein Kludge zu sein. Zugegebenermaßen stellt die `printf'-Syntax eine gewisse Lernkurve dar, aber ich würde gerne von anderen Nachteilen erfahren (? Kompatibilität, Leistung? ...).1 Stimmen
Verwandte: stackoverflow.com/questions/23929235/…