如何在php shell脚本

时间:2016-05-12 20:43:58

标签: php shell

我试图调试一个旨在通过命令行运行的遗留php脚本()。该脚本旨在获取1个可选参数,后跟N个选项。编写本意图时,以下两种情况均应有效。

案例1:带选项的论据:

php script.php <argument> --option-a=tuesdays --option-b

案例2:没有选项参数:

php script.php --option-c

在脚本中,使用以下内容获取参数和选项:

$argument = (strpos($argv[1], '-') === 0) ? '' : $argv[1];
$options = getopt('', [
  'option-a:', 
  'option-b', 
  'option-c',
]);

案例2始终按预期工作。我收到选项,参数是空的。

案例1没有按预期工作。我收到了参数,但$ options数组总是空的。

我看过the suggestion that reverses the order of the options and arguments,所以我通过php script --option-c <argument>来调用它。我不想改变它被调用的方式,因为这是一个可以使用goodness-know-where的遗留脚本。

我有没有办法使用getopt()来获取可以纠正案例1的选项?

1 个答案:

答案 0 :(得分:3)

我通过http://php.net/getopt找到了自己的答案。 RTM。

  

选项的解析将在找到的第一个非选项结束时结束,   随后的任何内容都会被丢弃。