将数据从PHP发送到bash脚本

时间:2011-11-26 05:31:11

标签: php bash exec sh

我正在尝试将数据从PHP发送到bash脚本,然后将数据输出回用户。为什么我无法将“beans”发送到simple.sh并让它回显?

最后,我的目标是让我的网络浏览器输出“bean”。非常简单,但我不能让它工作(完整的菜鸟)。

这是我的test.php:

<?php
echo "<pre>";
    $var = 'beans';
    exec("/var/www/html/dev/simple.sh $var", $output);
    echo var_dump($output);
echo "</pre>";    
?>

这是我的simple.sh:

read var
echo $var

我做错了什么?

4 个答案:

答案 0 :(得分:2)

您没有执行shell脚本,所以这里是正确的代码:

echo "<pre>";
    $var = 'beans';
    exec("sh /var/www/html/dev/simple.sh $var", $output);
    echo var_dump($output);
echo "</pre>";

此外,您的shell脚本有问题:

#!/bin/sh
echo $1

注意:命令READ仅用于从键盘扫描字符串!!如果你想通过参数传递它,请回显这些$ 1,$ 2,$ 3,......这是你逐个输入的参数数量。

答案 1 :(得分:1)

您的shell脚本没有按照您的想法执行。 read var将读取用户输入,而不是命令行参数。将simple.sh更改为更像这样的内容:

#!/bin/bash

echo $1

该脚本假设您只希望将第一个参数传递给shell脚本。如果您需要更多,则必须适当地修改脚本。我猜你最终会对你的shell脚本做一些非常不同的事情,并且命令行参数不是目标,所以这对你的测试应该足够好。

答案 2 :(得分:0)

你通过$ 1,$ 2等访问shell参数,所以试试这个:

var=$1
echo $var

答案 3 :(得分:0)

“read var”试图从标准输入读取一行并将其放入变量中。

您将$ var作为命令行参数传递给脚本,而不是将其传递给标准输入。