好的,所以继续我的bash命令我想发送一个变量
perl -pi -e 's/ : /:/g' /opt/lampp/htdocs/"variable needs to go here"
然后我在php中使用我的变量
$filename
如何编辑我的bash脚本以接受变量 以及如何传递变量并从php执行bash任何帮助将不胜感激。 我只是想不通如何让bash准备好接受一个变量以及如何让php发送它并执行脚本
答案 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