2008年05月21日

PHP。getoptでハマッタ。

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

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"
}
成功した。



まとめ


  • 勝手な思い込みで「:」がデリミタだと思ってた
  • 「半角英数 + :」で初めて意味がある。
  • しっかりマニュアルを読め


半袖 at 22:35│Comments(0)TrackBack(0)PHP 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔