getoptコマンド(その3)


アニメ『M3~ソノ黑キ鋼~』(2014)

暗い印象を受けるのは、暗闇のシーンが多いからでしょうか。3話で一旦視聴を中断。つまらなくはないのですが、他に見るアニメがたくさんあるので、休日にとっておこうかと思います。

getoptコマンドの続きで、ロングオプション使います。
ロングオプションを指定するには、-oでショートオプションを指定した上で、-lを使います。ショートオプションがなくても-o “”として指定する必要があります。

takk@deb9:~$ getopt -o "" -l "aaaa" -l "bbbb" -- --aaaa --bbbb
 --aaaa --bbbb --
takk@deb9:~$ 

ロングオプションに値を与えるときは、:をつけます。

takk@deb9:~$ getopt -o "" -l "aaaa:" -l "bbbb:" -- --aaaa 3 --bbbb=5
 --aaaa '3' --bbbb '5' --
takk@deb9:~$ 

ショートとロングオプションの混在。

takk@deb9:~$ getopt -o "abc" -l "aaaa:" -- --aaaa 10 -a
 --aaaa '10' -a --
takk@deb9:~$ 

ロングオプションが複数ある場合は、,(カンマ)で区切れば一回で指定できます。

takk@deb9:~$ getopt -o "" -l "aaaa:,bbbb:" -- --aaaa 30 --bbbb=50
 --aaaa '30' --bbbb '50' --
takk@deb9:~$ 

:(コロン)をつけた場合は、値を指定しないとエラーになります。

takk@deb9:~$ getopt -o "" -l "aaaa:" -- --aaaa
getopt: オプション '--aaaa' は引数が必要です
 --
takk@deb9:~$ 

:(コロン)二つの場合は、値は省略可能になります。

takk@deb9:~$ getopt -o "" -l "aaaa::" -- --aaaa
 --aaaa '' --
takk@deb9:~$ getopt -o "" -l "aaaa::" -- --aaaa 4
 --aaaa '' -- '4'
takk@deb9:~$ 

スクリプト内で使ってみましょう。

takk@deb9:~$ cat -n test.sh
     1	#!/bin/bash
     2	set -- `getopt -o "ab:c" -l "help,version" -- $@`
     3	while :;do
     4	  case $1 in
     5		-a)
     6			echo "A"
     7			;;
     8		-b)
     9			echo "B=$2"
    10			;;
    11		-c)
    12			echo "C"
    13			;;
    14		--help)
    15			echo "HELP"
    16			;;
    17		--version)
    18			echo "VER=0.0"
    19			;;
    20		--)
    21			break
    22			;;
    23	  esac
    24	  shift
    25	done
takk@deb9:~$ 

実行。全部オプションをつけてみました。

takk@deb9:~$ ./test.sh --help --version -b99 -ac
HELP
VER=0.0
B='99'
A
C
takk@deb9:~$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA