getoptコマンド(その1)


アニメ『FAIRY TAIL』
最近見てるブラッククローバーの影響で魔導士ものが見たくなって、今頃になってこのアニメの第1期を見始めました。文句なく面白いです。

サラマンダーと聞いて、思い浮かべるのはシューティングゲーム、グラディウスの続編の沙羅曼蛇。ファミコン版の沙羅曼蛇を夢中になってプレイしてました。グラディウスもですが、自機にくっついて一緒に攻撃してくれる「オプション」がありましたね。その頃オプションといえば、BASICのOPTION BASEとかしか馴染みがなかったので、この味方のフォローをしてくれる謎の発光体を、オプションと呼ぶことに抵抗があったのを覚えてます。

今回はオプション解析コマンドのgetoptを使います。

getoptを引数なしで実行すると、

 
takk@deb9:~$ getopt
getopt: missing optstring argument
Try `getopt --help' for more information.
takk@deb9:~$

エラーになります。
引数は1つ以上必要です。

getopt “指定可能なオプション”

 
takk@deb9:~$ getopt "abcdef"
 --
takk@deb9:~$

しかし、これではオプション解析にはならないので、解析したいオプションも指定します。

getopt “指定可能なオプション” 解析したいオプション

 
takk@deb9:~$ getopt "abcdef" -c
 -c --
takk@deb9:~$

オプションに-cを指定しました。
オプション一つだけでは、何の恩恵があるのかよくわかりません。複数のオプションを指定してみます。

 
takk@deb9:~$ getopt "abcdef" -ac
 -a -c --
takk@deb9:~$

-acを指定すると、-aと-cに分離されます。
forで回すとこうなります。

 
takk@deb9:~$ for i in `getopt "abcdef" -ac`;do echo $i;done
-a
-c
--
takk@deb9:~$

もっとたくさん指定してみます。

 
takk@deb9:~$ for i in `getopt "abcdef" -abcdef`;do echo $i;done
-a
-b
-c
-d

-f
--
takk@deb9:~$

-eが抜けていますが、echoコマンドを使っているため、echoのオプションとみなされ、消失してます。

つづく

Leave a Reply

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

CAPTCHA