スポンサーリンク

オプションの後ろに引数が必要な場合

シェルの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

スポンサーリンク