【发布时间】:2022-01-19 21:25:53
【问题描述】:
<?php var_dump($argv); ?>
好的 - 直接运行 - 得到预期的结果。
$ php /tmp/check-arg.php -s 测试黄色总线
array(5) {
[0]=>
string(18) "/tmp/check-arg.php"
[1]=>
string(2) "-s"
[2]=>
string(4) "test"
[3]=>
string(6) "yellow"
[4]=>
string(3) "bus"
}
好的 - 所以我想像运行命令一样运行这个脚本(它是一个替换现有命令的 php 脚本),所以我创建了这个脚本
$ vi /tmp/testingcommand
php /tmp/check-arg.php $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
(edit - change the $10 to {10} is solution - or use "$@" instead of $1 $2...)
所以我应该可以
$ /tmp/testingcommand -s 测试黄色总线
array(6) {
[0]=>
string(18) "/tmp/check-arg.php"
[1]=>
string(2) "-s"
[2]=>
string(4) "test"
[3]=>
string(6) "yellow"
[4]=>
string(3) "bus"
[5]=>
string(3) "-s0"
}
好的——那么“-s0”是从哪里来的?我做了一些摆弄,这就是 $argv[1] (-s) 和“0”中的内容(所以在本例中为 -s0)
有什么想法吗?发生在我们的 RHEL7 和 Fedora 30 设置上
由于脚本可以直接运行(php program.php)或通过脚本运行,我不能只忽略 argv[] 的最后一个索引 我想我可以检查 argv[0] 的 '...php' 并保留所有索引,如果没有 ...php 则忽略最后一个索引
【问题讨论】:
-
$10是$1后跟 0 的扩展。 -
php /tmp/check-arg.php "$@"顺便说一句。 -
好的 - 现在很有意义!