在命令行上传递多部分变量

时间:2018-06-18 05:30:13

标签: php command-line

我有一个php文件,我从命令行运行。此脚本有一个必需的未命名元素(file.xml),但允许某些选项(例如--conf LocalSettings.php)。

php importDump.php --conf LocalSettings.php file.xml

我的问题是我的选项之一需要传递设置(setting1)。这适用于大多数脚本,例如:

php runJobs.php --conf LocalSettings.php setting1

但不是那些拥有必需的未命名元素的元素,例如:

php importDump.php --conf LocalSettings.php setting1 file.xml

我尝试将部分放在引号中,因此它被视为一段代码,但它不会起作用。

php importDump.php --conf "LocalSettings.php setting1" file.xml

我可以修改的唯一内容是LocalSettings.php脚本以及我如何在命令行上调用内容。

如何使用此命令处理需要未命名部分的命令(importDump.php)和不需要命令的部分(runJobs.php)?

作为参考,我使用$argv[3]在LocalSettings.php脚本中获取设置输入。

1 个答案:

答案 0 :(得分:0)

不确定为什么引用引号并不适合你。

$ php arg_test.php --conf "test foo" file.xml
array(4) {
  [0]=>
  string(12) "arg_test.php"
  [1]=>
  string(6) "--conf"
  [2]=>
  string(8) "test foo"
  [3]=>
  string(8) "file.xml"
}

arg_test.php只是<?php var_dump($argv)

但是,请考虑使用Symfony Console或其他一些使CLI使用更容易的库。