2008年05月21日
CLI版
Webアプリケーションを作っている訳ではない。
関わってるプロジェクトの開発言語がPHPなのでPHPで書いてる。
コマンドラインでオプションを指定するにはgetopt関数。
$ cat > getopt.php
#!/usr/bin/env php
<?php
$opt_map = getopt("a:b:c:d:e");
var_dump($opt_map);
^D
$ chmod +x ./getopt.php
$ php -l ./getopt.php
問題ないので実行。
$ ./getopt.php -a1 -b2 -c3 -d4 -e5
array(5) {
["a"]=>
string(1) "1"
["b"]=>
string(1) "2"
["c"]=>
string(1) "3"
["d"]=>
string(1) "4"
["e"]=>
bool(false)
}
eに何も入ってない…getoptの引数、eの後にコロンが無い!
< $opt_map = getopt("a:b:c:d:e");
> $opt_map = getopt("a:b:c:d:e:");
再度実行
$ ./getopt.php -a1 -b2 -c3 -d4 -e5
array(5) {
["a"]=>
string(1) "1"
["b"]=>
string(1) "2"
["c"]=>
string(1) "3"
["d"]=>
string(1) "4"
["e"]=>
string(1) "5"
}
成功した。まとめ
- 勝手な思い込みで「:」がデリミタだと思ってた
- 「半角英数 + :」で初めて意味がある。
- しっかりマニュアルを読め