我想将shell变量传递给PHP脚本。这是我的尝试:
var1=`echo name_16`
var2=`echo /home/place/end/name_16`
php script.php ${var1} ${var2}
这些变量包含特殊字符[)(*&^%$#@!~<>_
],但不包含连字符。
我正在运行PHP 4.3.9 cgi。
我尝试在我的PHP脚本中获取变量:
$fish = $argv[1];
$sticks = $argv[2];
这些变量显示为null。我已经尝试了var_dump($argv);
,这也会返回null
我是否正确传递了这些参数,或者我在这里遗漏了什么?
答案 0 :(得分:1)
我想将此添加为评论,但需要答案的格式化功能才能响应。
代码还有其他问题。参数的基本测试表明变量应该有效。
foo.php
的内容:
<?php
print "$argv[1]\n$argv[2]\n" ;
$x = $argv[1];
$y = $argv[2];
print "$x\n$y\n";
?>
然后设置:
$ var1=`echo name_16`
$ var2=`echo /home/place/end/name_16`
执行:
$ php foo.php ${var1} ${var2}
name_16
/home/place/end/name_16
name_16
/home/place/end/name_16
$
因此,使用提供的信息无法重现问题。以上操作使用 PHP 5.2.6 (cli) (built: May 8 2008 08:53:44)
,因此它可能是版本行为的差异。
答案 1 :(得分:0)
只需使用$argv
,它是一组参数和引号围绕特殊参数。
http://www.php.net/manual/en/reserved.variables.argv.php
test.php的:
<?php
print_r($argv);
?>
>HHH="&^%$#@"
> php test.php hello args $HHH
输出:
Array
(
[0] => test.php
[1] => hello
[2] => args
[3] => &^%$#@
)