繁体   English   中英

如何从 PHP 文件运行 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM