0

タイトルがわかりずらくて申し訳ありませんが、言いたいことは次のとおりです。

複数のパラメーターを受け入れることができるスクリプトがある場合、渡されたパラメーターに基づいてスクリプト アクションをより簡単に制御するために、getops コマンドを使用します。ただし、これらのパラメーターの 1 つを 5 ~ 9 の任意の数値にすることができます。スクリプトにコマンドとして渡された 5 から 9 までの任意の数字を単一のユーザー コマンドとして取得する必要があることを getops に伝える方法はありますか?

これまでの私のコードは次のようなものです:

#!/bin/sh
args=`getopt -o abc: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
done

次のようなことができるかどうかを確認したい:

#!/bin/sh
args=`getopt -o ab[0-9]c: -- "$@"`
eval set -- "$args"
echo "After getopt"
for i in $args
do
 case "$i" in
    -c) shift;echo "flag c set to $1";shift;;
    -a) shift;echo "flag a set";;
    -b) shift;echo "flag b set";;
    -[0-9]) shift; echo $i;;
done
4

1 に答える 1

0

いいえ、少なくとも私が使用しているものではありません(誰かが強化されたものを持っているかもしれませんが、それはどこにも標準ではありません).

その特定のケースでは、おそらく使用しても問題ありません。

args=`getopt -o ab0123456789c: -- "$@"`

ただし、より大きなケースでは、扱いにくい場合があります。

それらを個別のオプションとして扱わないことを考えたことはありますか? つまり、ロギング プロシージャのデバッグ レベルであるとします。使用できない理由:

args=`getopt -o abc:d: -- "$@"`

progname -b -d4代わりにprogname -b -4?で指定します。

于 2010-10-22T02:02:48.347 に答える