2013-10-22 26 views
10

Was ist eine gute Möglichkeit, Hilfetext für ein Bash-Skript auszugeben, um die Spalten Zeilen richtig aufgereiht zu bekommen?Bash Script "Usage" Ausgabe Formatierung

so etwas wie:

Usage: mycommand [options] 

    -h| --help   this is some help text. 
         this is more help text. 
    -1|--first-option this is my first option 
    -2|--second-option this is my second option 

Antwort

21

mag ich cat für diesen Einsatz:

usage.sh:

#!/bin/bash 

cat <<EOF 
Usage: $0 [options] 

-h| --help   this is some help text. 
        this is more help text. 
-1|--first-option this is my first option 
-2|--second-option this is my second option 
EOF 

erhalten Sie folgende Ausgabe:

Usage: usage.sh [options] 

-h| --help   this is some help text. 
        this is more help text. 
-1|--first-option this is my first option 
-2|--second-option this is my second option 
+0

Ja, das wusste ich schon. Ich mag die Formatierung in der Quelldatei einfach nicht, aber vielleicht mache ich einfach eine "Verwendungs" -Funktion und rufe sie in meinem Switch-Case auf und gehe von dort aus. Ich mag es wirklich nicht, manchmal in bash zu formatieren. – flamusdiu

2

Heredocs haben auch eine Registerkarte eingerückt Option. Auf diese Weise können Sie jeder Codezeile eine beliebige Anzahl von Tabulatoren voranstellen - und diese werden bei der Ausgabe "aufgefressen", so dass Ihre Ausgabe gerechtfertigt ist. Beachten Sie, dass der abschließende 'EOF' (in diesem Beispiel) vollständig eingerückt sein muss - der 'EOF' darf nicht eingerückt sein.

Seien Sie vorsichtig bei allen Editoren, die Tabulatorzeichen in Leerzeichen konvertieren (zB "vi" -Option ist "expandtab", die Tabulatoren in Leerzeichen konvertiert). Leider werden mehrere Leerzeichen nicht wie Tabs "aufgefressen". Wenn Sie für die Codeformatierung "expandtab" (oder ähnliche Optionen) verwenden, ist die Heredoc-Tab-Einzugsmethode für Sie wahrscheinlich nicht nützlich.

Im folgenden Beispiel ist die "< < -" die Syntax für ein Heredoc, um die Registerkarteneinzüge zu berücksichtigen.

Beispiel:

cat <<-EOF 
    usage.sh [options] 

    -h| --help   this is some help text. 
         this is more help text. 
    -1|--first-option this is my first option 
    -2|--second-option this is my second option 
EOF 

Beachten Sie, dass es „Tabs“ vor der „Katze“ sind, und die nachfolgenden Zeilen - HTML hier formatiert wird wahrscheinlich nicht, dass Sie gehen zu ermöglichen, das Beispiel Cut-n-Paste .

Beachten Sie, wie der abschließende "EOF" linksbündig ist.