2013-10-22 12 views
10

Quale è un buon modo per generare un testo di aiuto per uno script bash per ottenere il corretto allineamento delle righe delle colonne?Bash Script Formattazione dell'output "Uso"

qualcosa di simile:

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 

risposta

21

Mi piace usare cat per questo:

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 

Questo stamperà:

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

Sì, lo sapevo già. Semplicemente non mi piace la formattazione nel file sorgente, ma forse farò semplicemente una funzione di "utilizzo" e la chiamerò nel mio caso switch e andrò da lì. Non mi piace davvero la formattazione a volte in bash. – flamusdiu

2

Heredocs ha anche un'opzione con rientro a schede. Questo ti permette di prefigurare ogni riga di codice con qualsiasi numero di schede - e quelle saranno "mangiate" in uscita, a sinistra a giustificare il tuo output. Notare che il trailing 'EOF' (in questo esempio) DEVE essere completamente rientrato a sinistra - il 'EOF' non può essere indentato da tabulazioni.

Fare attenzione agli editor che convertono i caratteri di tabulazione in spazi (ad esempio, l'opzione "vi" è "expandtab" che converte le schede in spazi). Sfortunatamente, più spazi non sono "mangiati" come lo sono le schede. Se si utilizza 'expandtab' (o opzioni simili) per la formattazione del codice, non è probabile che il metodo del rientro della scheda heredoc sia utile.

Nell'esempio seguente, "< < -" è la sintassi per un heredoc per onorare i rientri della scheda.

Esempio:

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 

noti che ci sono "schede" di fronte al "gatto", e le linee successive - formattazione HTML qui è probabile che non sta per consentire di Cut-n-incollare l'esempio .

Nota come la terminazione "EOF" è giustificata a sinistra.