オプションの後ろに引数が必要な場合
シェルのgetoptsを使った引数設定についてです。
下記のように、例えば、-fオプションを設定する場合、
fのあとに":"をつけると、引数が必要になります。
while getopts f:d:k: OPTION
下記がサンプルコードになります。
引数チェックをしています。
参考:シェル変数($#)で引数チェックをする
$ cat sample.sh
#!/bin/sh
if [ $# = 0 ]; then
echo 引数なし
exit 1
fi
while getopts f:d:k: OPTION
do
case $OPTION in
f) echo $OPTARG;;
d) echo $OPTARG;;
k) echo $OPTARG;;
esac
done
下記が実行結果になります。
$ ./sample.sh -f optionf optionf
オプションの後ろに引数がないとエラーとなります。
$ ./sample.sh -f ./sample.sh: option requires an argument -- f
想定外のオプションを設定するとエラーとなります。
$ ./sample.sh -h ./sample.sh: illegal option -- h
オプションの後ろに引数が不要な場合
下記のように、-fオプションを設定する場合、
fのあとに":"をつけないと、引数が不要になります。
下記がサンプルコードになります。
$ cat sample1.sh
#!/bin/sh
while getopts fd:k: OPTION
do
case $OPTION in
f) echo -fのオプション;;
d) echo $OPTARG;;
k) echo $OPTARG;;
esac
done
下記が実行結果になります。
-fオプションは引数が不要です。
$ ./sample1.sh -f -fのオプション
-dオプションは引数を設定しないとエラーとなります。
$ ./sample1.sh -d optiond optiond $ ./sample1.sh -d ./sample1.sh: option requires an argument -- d
