2013-10-22 16 views
10

Jaki jest dobry sposób wypisywania tekstu pomocy dla skryptu basha, aby poprawnie ułożyć linie kolumn?Formatowanie wyniku "Użycie" skryptu Bash

coś takiego:

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 

Odpowiedz

21

Lubię używać cat na to:

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 

Wyjście to będzie:

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

Tak, już to wiedziałem. Po prostu nie podoba mi się formatowanie w pliku źródłowym, ale może po prostu wykonam funkcję "użytkowania" i wezwę to w moim przypadku przełącznika i przejdę od tego miejsca. Naprawdę nie lubię formatowania czasami w bashu. – flamusdiu

2

Heredocs mają również opcję wcięcia z zakładką. Pozwala to na wstępne przypisanie każdej linii kodu dowolną liczbą zakładek - a te zostaną "zjedzone" na wyjściu, pozostawiając usprawiedliwienie wyjścia. Zwróć uwagę, że końcowe "EOF" (w tym przykładzie) MUSI być całkowicie wcięte w lewo - "EOF" nie może być wcięty w tabulator.

Uważaj na edytory, które konwertują znaki tabulacji na spacje (np. Opcja "vi" to "expandtab", która konwertuje tabulatory na spacje). Niestety, wiele spacji nie jest "zjedzonych" jak karty. Jeśli użyjesz "expandtab" (lub podobnych opcji) do formatowania kodu, wówczas metoda wcięcia tabulatora heredoc prawdopodobnie nie będzie dla ciebie przydatna.

W poniższym przykładzie "< < -" jest składnią heredoc dla uhonorowania wcięć tabulatorów.

Przykład:

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 

Należy pamiętać, że istnieją „wypustki” z przodu „kota”, a kolejne linie - HTML formatowanie jest tu prawdopodobnie nie będzie pozwalają na cut-n-wklej przykład .

Zauważ, że zakończenie "EOF" jest wyrównane do lewej.