2016-12-26 4 views
0

Ich habe ein Skript, das einige Aufgaben in 3 Hauptschritten ausführt. Jeder Schritt kann einige zusätzliche Argumente erfordern, aber abhängig davon, welche Schritte gewählt wurden, können diese variieren. Der Benutzer kann nur einige der Schritte ausführen, aber nicht alle Kombinationen werden unterstützt. Ich möchte den Benutzer über alle möglichen Möglichkeiten informieren, wie sie das Skript aufrufen können, aber es in einer prägnanten Art und Weise tun.Wie kann ich Verwendungshinweise in einem komplizierten Skript angeben?

Die einzig richtige (das heißt alle Möglichkeiten unter Angabe der korrekten Notation) Art und Weise, die mir in den Sinn kommt, ist die besagt, alle explizit in getrennten Linien Varianten:

./script -p [-d <arg>] 
./script -u -d <arg> 
./script -r -e <arg> -f <arg> -g|(-h <arg> -i <arg>) 
./script -pu [-d <arg>] 
./script -ur -d <arg> -e <arg> -f <arg> -g|(-h <arg> -i <arg>) 
./script -pur [-d <arg>] -e <arg> -f <arg> -g|(-h <arg> -i <arg>) 

Aber das ist ziemlich ausführlich. Was noch schlimmer ist, wenn ich meinem Skript einen weiteren Schritt hinzufüge, muss ich alle Kombinationen mit diesem Schritt auflisten. Der andere Weg, den ich angehen könnte, wäre, alle Argumente einfach als optional aufzulisten (da für alle Schritte kein Argument erforderlich ist), aber das wäre natürlich falsch (kein einzelnes Argument ist immer zwingend, aber in jedem Fall) es müssen bereitgestellt einige Argumente sein.

./script [-p] [-u] [-r] [-d <arg>] [-e <arg>] [-f <arg>] [-g|(-h <arg> -i <arg>)] 

Ehrlich gesagt, ich weiß nicht, was man ist schlimmer wie würden Sie mir empfehlen, meine Verwendungshinweise zu schreiben und, wenn möglich, schlagen Sie bitte eine allgemeine? Ansatz so viele Skripte mit mehreren Optionen haben diese Art von Problemen.

Antwort

2

Ich habe diese langen Zeilen nie gemocht. Während Sie argumentieren können, sind sie notwendig sie sind nicht wirklich für den menschlichen Verzehr gedacht. Ich ziehe den Stil pacman documentation:

 
SYNOPSIS 
    pacman <operation> [options] [targets] 

OPERATIONS 
    -D, --database 
    Operate on the package database. 

    -Q, --query 
    Query the package database. 

OPTIONS 
    -b, --dbpath <path> 
    Specify an alternative database location (a typical default is 
    /var/lib/pacman). 

    -r, --root <path> 
    Specify an alternative installation root (default is /). 

EXAMPLES 
    pacman -Ss ne.hack 
    Search for regexp "ne.hack" in package database. 

    pacman -S gpm 
    Download and install gpm including dependencies. 

Oder wenn Sie die verschiedenen Nutzungsformen eindeutig zu machen möchten, können Sie es wie coreutils tun:

 
SYNOPSIS 
    ln [OPTION]... [-T] TARGET LINK_NAME (1st form) 
    ln [OPTION]... TARGET     (2nd form) 
    ln [OPTION]... TARGET... DIRECTORY  (3rd form) 
    ln [OPTION]... -t DIRECTORY TARGET... (4th form) 

SYNOPSIS 
    mv [OPTION]... [-T] SOURCE DEST 
    mv [OPTION]... SOURCE... DIRECTORY 
    mv [OPTION]... -t DIRECTORY SOURCE... 

SYNOPSIS 
    cp [OPTION]... [-T] SOURCE DEST 
    cp [OPTION]... SOURCE... DIRECTORY 
    cp [OPTION]... -t DIRECTORY SOURCE... 
+0

Könnten Sie 'pacman' Ansatz erarbeiten ? Ich kenne das Tool nicht, und mir ist nicht klar, was die Idee hinter seiner Dokumentation ist. Auch jemand ** hör auf meine Kommentare zu löschen **. – NPS

Verwandte Themen