我正在尝试将数据从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
我做错了什么?
答案 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作为命令行参数传递给脚本,而不是将其传递给标准输入。