好的,所以这是我的 bash 命令,我想将变量发送到
perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/"variable needs to go here"
然后我在 php 中有我的变量是
$filename
如何编辑我的 bash 脚本以接受变量以及如何传递变量并从 php 执行 bash 任何帮助将不胜感激。我只是不知道如何让 bash 准备好接受变量以及如何让 php 发送它并执行脚本
在 php 中,使用该exec()
函数调用 bash 脚本,如下所示:
$filename = escapeshellarg($filename);
exec("perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/".$filename);
还有另一种解决方案,不是那么优雅,但它有效。
您可以从 php 脚本中回显该值,并将其捕获到 bash 脚本中的变量中(使用反引号)。
不要忘记首先禁用 php 脚本中的错误输出,以消除输出带有通知、警告的危险......
例如。
<?php
ini_set("display_errors", "Off");
ini_set("log_errors", "On");
$filename = 'someValue';
echo $filename;
?>
#!/bin/bash
#execute the php file
FILENAME=`php file.php`
perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/$FILENAME
尝试在您的 php 脚本中使用 shell_exec 来执行您的 shell 脚本并传递您的变量,如下所示:
$cmd="perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/" . escapeshellarg($variable);
$r=shell_exec($cmd);
escapeshellarg 用于转义 $variable 中的任何潜在危险字符,以防止命令行注入攻击。