0

好的,所以这是我的 bash 命令,我想将变量发送到

perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/"variable needs to go here"

然后我在 php 中有我的变量是

$filename

如何编辑我的 bash 脚本以接受变量以及如何传递变量并从 php 执行 bash 任何帮助将不胜感激。我只是不知道如何让 bash 准备好接受变量以及如何让 php 发送它并执行脚本

4

3 回答 3

1

在 php 中,使用该exec()函数调用 bash 脚本,如下所示:

$filename = escapeshellarg($filename);
exec("perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/".$filename);
于 2013-07-25T20:22:01.830 回答
0

还有另一种解决方案,不是那么优雅,但它有效。
您可以从 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

于 2013-07-25T21:27:39.253 回答
0

尝试在您的 php 脚本中使用 shell_exec 来执行您的 shell 脚本并传递您的变量,如下所示:

$cmd="perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/" .  escapeshellarg($variable);
$r=shell_exec($cmd);

escapeshellarg 用于转义 $variable 中的任何潜在危险字符,以防止命令行注入攻击。

于 2013-07-25T20:20:58.040 回答