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:~$
上手くいきました。


コメント