将shell变量作为参数传递给PHP脚本

时间:2014-02-12 16:57:45

标签: php shell

我想将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 我是否正确传递了这些参数,或者我在这里遗漏了什么?

2 个答案:

答案 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] => &^%$#@

)
相关问题