Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从PHP发送到bash脚本_Php_Bash_Exec_Sh - Fatal编程技术网

将数据从PHP发送到bash脚本

将数据从PHP发送到bash脚本,php,bash,exec,sh,Php,Bash,Exec,Sh,我试图将数据从PHP发送到bash脚本,然后将数据输出回用户。为什么我不能将“beans”发送到simple.sh并得到它的响应 最后,我的目标是让我的web浏览器输出“bean”。非常简单,但我不能让它工作(完全noob) 下面是我的test.php: <?php echo "<pre>"; $var = 'beans'; exec("/var/www/html/dev/simple.sh $var", $output); echo var_dump(

我试图将数据从PHP发送到bash脚本,然后将数据输出回用户。为什么我不能将“beans”发送到simple.sh并得到它的响应

最后,我的目标是让我的web浏览器输出“bean”。非常简单,但我不能让它工作(完全noob)

下面是我的test.php:

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

我做错了什么?

您可以通过$1、$2等访问shell参数,因此请尝试以下方法:

#!/bin/bash

echo $1
“readvar”试图从标准输入中读取一行,并将其放入变量中


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

您的shell脚本并不像您想象的那样<代码>读取变量将读取用户输入,而不是命令行参数。将simple.sh更改为类似以下内容:

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

该脚本假定您只希望将第一个参数传递给shell脚本。如果您需要更多,则必须适当地修改脚本。我猜您最终会对shell脚本执行一些非常不同的操作,并且命令行参数不是目标,因此这对于您的测试来说应该足够好了。

您没有执行shell脚本,因此下面是正确的代码:

#!/bin/sh
echo $1
注意:命令读取仅用于从键盘扫描字符串!!如果您想通过参数传递它,请只回显这些$1、$2、$3,。。。这是你一个接一个输入的参数数

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