我如何从我的PHP脚本传递一个变量并将其发送到我的bash脚本

时间:2013-07-25 20:16:49

标签: php bash execute

好的,所以继续我的bash命令我想发送一个变量

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

然后我在php中使用我的变量

$filename

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

3 个答案:

答案 0 :(得分:1)

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

$filename = escapeshellarg($filename);
exec("perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/".$filename);

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

还有另一种解决方案,不是那么优雅,但它有效 您可以回显php脚本中的值,并在bash脚本中的变量中捕获它(使用反引号) 不要忘记首先在php脚本中禁用错误​​输出,以消除输出通知,警告的危险......

EG。

<?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