スクリプトがありますmyscript.sh
#!/bin/sh
echo $1 $2
のようなものを使用しています...
./myscript.sh foo bar
これは私に出力を与えます...
foo bar
しかし、このスクリプトにカスタムコマンドオプションを含めるにはどうすればよいですか?例えば ...
./myscript.sh -a foo and corespond to $1
そして
./myscript.sh -b bar and corespond to $2
使用するシェルとしてbashをリストしているので、次のように入力します。
$ help getopts
これは次のようなものを出力します:
getopts:getopts optstring name [arg]
解析オプションの引数。Getoptsは、シェルプロシージャで位置パラメータをオプションとして解析するために使用されます。
OPTSTRINGには、認識されるオプション文字が含まれています。文字の後にコロンが続く場合、オプションには引数が必要であり、引数は空白で区切られている必要があります。
Getoptsは呼び出されるたびに、シェル変数$ nameに次のオプションを配置し、存在しない場合は名前を初期化し、処理される次の引数のインデックスをシェル変数OPTINDに入れます。 OPTINDは、シェルまたはシェルスクリプトが呼び出されるたびに1に初期化されます。オプションに引数が必要な場合、getoptsはその引数をシェル変数OPTARGに入れます。
Getoptsは通常、定位置パラメーター($ 0-$ 9)を解析しますが、引数がさらに指定されている場合は、代わりに解析されます。
関連:
man 1 bash を使用する必要があります。
小さな例:
#!/bin/bash
while getopts "a:b:" opt # get options for -a and -b ( ':' - option has an argument )
do
case $opt in
a) echo "Option a: $opt, argument: $OPTARG";;
b) echo "Option b: $opt, argument: $OPTARG";;
esac
done