2013-07-25 89 views
0

好了,所以我的继承人bash命令我想给一个变量发送到如何传递从我的PHP脚本变量,并将其发送到我的bash脚本

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

的话,我有我的变量在PHP至极是

$filename 

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

+0

你使用bash或Perl? – jh314

回答

1

在PHP中使用的exec()函数调用bash脚本是这样的:

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

我使用了它,它完美地工作谢谢 –

0

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

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

escapeshellarg用来逃避$变量的任何潜在危险的人物,以防止命令行注入攻击。

+0

我已经有一个bash脚本中的perl基本上需要将变量传递给/opt/lampp/htdocs/bash.sh,然后执行它我将如何做 –

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