TVアニメ「ご注文はうさぎですか?」AJ2014PV
アニメ『ご注文はうさぎですか?』
はてな(?)が、一つのタイトルと、二つあるタイトルがあって、どちらから見れば正解なのかよくわからず、一つの方がから見はじめました。最近精力的に古いアニメを平らげ続けているので、本当に忙しい日々です。
getoptコマンドの続きです。
スクリプト化します。
takk@deb9:~$ cat -n test.sh 1 #!/bin/bash 2 for i in `getopt "abc" $@`;do 3 case $i in 4 -a) 5 echo "A" 6 ;; 7 -b) 8 echo "B" 9 ;; 10 -c) 11 echo "C" 12 ;; 13 esac 14 done
ショートオプション -a -b -cを指定すると、それぞれA B Cを表示するスクリプトです。
実行権限をつけて実行してみます。
takk@deb9:~$ chmod 755 test.sh takk@deb9:~$ ./test.sh -b B takk@deb9:~$
オプションの指定順序が入れ替わってもちゃんと解析されます。
takk@deb9:~$ ./test.sh -bca B C A takk@deb9:~$
次は、値つきオプションを指定します。
ショートオプションの小文字の後に:(コロン)をつければ、値が指定できるようになります。
takk@deb9:~$ getopt "ab:c" -b3 -ac -b 3 -a -c -- takk@deb9:~$
これをスクリプトに組み込んでcase判定させたいですが、
set -- 引数
を使うと、位置パラメータが引数で更新されますので、これを使います。
takk@deb9:~$ cat -n test.sh 1 #!/bin/bash 2 set -- `getopt "ab:c" $@` 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 --) 15 break 16 ;; 17 esac 18 shift 19 done takk@deb9:~$
実行してみます。
takk@deb9:~$ ./test.sh -b3 -ac B=3 A C takk@deb9:~$
上手くいきました。
コメント