2016-04-01 12 views
1

Ich schrieb meine Verwendungsfunktion für ein Bash-Skript mit printf, aber es war so umständlich, dass ich mir vorstellen muss ein einfacher Weg als die Art und Weise, dass ich es getan habe. Ich bin gespannt, was es ist, damit ich mich für das nächste Mal verbessern kann (nur 2 Argumente, um den Punkt zu verdeutlichen). HierProper Weg zum Umbrechen von Spalte mit Bash printf

ist der Code selbst:

usage(){ 
    printf "\n\e[1m%s\x1b[0m %-5s\n" "USAGE:" "Blah Blah" 
    printf "%7s \e[1m%-15s\x1b[0m %s %s\n" "" "-h" "[Optional]" "Display usage information" 
    printf "%7s \e[1m%-15s\x1b[0m %s %s" "" "-ofps" "[Optional] Number of output frames per second" 
    printf "%-34s %s\n" "" "Applies to the *output* video frame rate." 
    exit 1 
} 

Ausgabe wie folgt aussieht:

USAGE: Blah Blah 
     -h  [Optional] Display usage information 
     -ofps  [Optional] Number of output frames per second            
          Applies to the *output* video frame rate. 

Wenn es eine Möglichkeit war die Angabe, dass die Zeichenfolge in der rechten "Spalte" Wrap-around sollen (und bewahren den Einzug), wenn die Länge der gesamte Linie 80 Zeichen überschreiten würde, die die Funktionalität wäre, die ich suche.

Ich interessiere mich für reine Bash-Lösungen, aber vor allem interessiert mich am meisten auf die einfachste Weise, dies zu tun, während immer noch printf verwenden.

Antwort

1

Dies ist die Art und Weise, wie ich meine Benutzungsbefehle normalerweise benutze, es verwendet printf nicht, aber es ist effektiv. (. Ich auch anstelle von Roh-Escape-Sequenzen verwenden tput Überprüfen Sie die tput(1) und terminfo(5) Handbuchseiten für weitere Details)

Usage="Blah Blah [-options...] 

    options 
    $(tput bold)-h$(tput sgr0)  Display usage information 
    $(tput bold)-o<fps>$(tput sgr0) Number of output frames per second 
      Applies to the *output* video frame rate 
" 

Dann, wenn ich es drucken möchten, habe ich:

echo 2>&1 "?Usage: $Usage"; 
exit 1 

oder eine Variation . Wenn Sie möchten, können Sie am Ende des Echos | fmt hinzufügen. Das wird die Verpackung für dich erledigen. Aber normalerweise mache ich einfach den großen mehrzeiligen String am Anfang meines Skripts, gleich nach der #!/bin/env bash, um als interne Dokumentation sowie die Verwendungsnachricht zu fungieren.

Verwandte Themen