如何从PHP文件中运行shell脚本文件内的循环?



我有一个shell脚本(myscript.sh),其中包含许多bash命令。我想从php文件(index.php)中运行这些命令。

我使用exec执行如下命令:

$contents = file_get_contents('../folder/myscript.sh');
$output = null;
$return_var = null;
exec($contents, $output, $return_var);
print_r($contents);
print_r($return_var);
print_r($output);

myscript.sh含量

VAR1=("somePath/allDirs")
ls
cd ..
ls
for DIR in "${VAR1[@]}"; do
echo "Name is $DIR"
done
pwd
....... other 5 lines of commands

循环之前的所有命令都在工作,即:lscd ..,我得到了输出。然而,for循环不工作,它停止执行它后面的其余命令。

我的问题是:如何执行这个循环是从php文件内的shell脚本文件?

注意:for循环包含更多的命令,这里我只是放了echo,使代码易于阅读和清晰。

您是否完全改变了脚本的内容?为什么不直接执行脚本文件而不是传递脚本的内容呢?无论如何,如果必须将内容直接传递给exec,则将其传递给bash -c并转义命令内容:

$contents = file_get_contents('../folder/myscript.sh');
$output = null;
$return_var = null;
$contents = escapeshellarg($contents);
exec("bash -c $contents", $output, $return_var);

最新更新