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

How to run for loop that is inside shell script file from PHP file?

我有一个 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 循环?

注意:这里的 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);