2016-12-26 7 views
0

私は3つの主要なステップでいくつかのタスクを実行するスクリプトを持っています。すべてのステップはいくつかの追加の引数を必要とするかもしれませんが、どのステップが選択されたかに応じて、これらは変わる可能ユーザーはいくつかのステップのみを実行することができますが、すべての組み合わせがサポートされているわけではありません。私はスクリプトを呼び出すことができる簡潔な方法でそれを行うすべての可能な方法についてユーザーに知らせたいと思います。複雑なスクリプトで使用上の注意を指定する方法は?

私の心に来るだけ(すなわち、正しい表記を使用して、すべての可能性を指定する)正しい方法は、すべて別々の行に明示的変異体は述べている:

./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>) 

しかし、これはかなり冗長です。さらに悪いことに、スクリプトに別のステップを追加すると、そのステップのすべての組み合わせをリストする必要があります。

私がこれにアプローチできるもう一つの方法は、すべての引数をオプションとしてリストすることです(引数はすべての手順で必須ではないため)が、もちろんこれは間違っています(単一の引数は常に必須ではありませんが、提供一部の引数があることが必要です。?率直に言って

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

、私は悪いことである1かわからないので、どのように私は、可能な場合、一般的に提案してください、私の使用上の注意を書いて、することをお勧めします複数のオプションを持つ多くのスクリプトには、この種の問題があります。

答えて

2

私は長い道のりを好みません。あなたは彼らが必要であると主張することができますが、 彼らは本当に人間の消費のためではありません。

 
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. 

それとも、別の利用形態を明確にしたい場合は、あなたが coreutilsのようにそれを行うことができます:

 
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

あなたはpacman'のアプローチ 'に手の込んだでした私は pacman documentationのスタイルを好みます?私はそのツールを知らないし、そのドキュメントの背後にあるアイデアが何であるかはっきりしていない。誰か**私のコメントの削除を中止します**。 – NPS

関連する問題