スクリプトがあります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
答え1
使用する必要があります男1強い打撃:
小さな例:
#!/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
答え2
bashを使用しているシェルとしてリストしたので、次のように入力します。
$ help getopts
これにより、次のように印刷されます。
getopts:getopts optstring name [arg]
オプションパラメータを解析します。シェルプロシージャはGetoptsを使用して、位置パラメータをオプションとして解析します。
OPTSTRINGには認識するオプション文字が含まれています。文字の後にコロンが続く場合、オプションには引数が必要で、スペースで区切る必要があります。
各呼び出しで、getoptsは次のオプションをシェル変数$ nameに配置し、nameが存在しない場合は初期化し、処理される次の引数のインデックスをシェル変数OPTINDに配置します。 OPTINDは、シェルまたはシェルスクリプトが呼び出されるたびに1に初期化されます。オプションに引数が必要な場合、getopts は引数をシェル変数 OPTARG に入れます。
Getoptsは通常、位置引数($ 0 - $ 9)を解析しますが、より多くの引数が指定された場合は代わりに解析されます。
関連: