我正在尝试设置一个html表单,将变量传递给php脚本,然后将它们传递给bash脚本。
我能够成功地将变量从html表单传递到php脚本,并且我能够将以下传递变量传递给我的bash脚本:
<?php
shell_exec('./bashscript.sh testarg1 testarg2 testarg3 testarg4');
?>
但是,当我使用以下内容时:
<?php
shell_exec('./bashscript.sh $_POST[arg1] $_POST[arg2] $_POST[arg3] $_POST[arg4]');
?>
我最终得到了:
[arg1]
[arg2]
[arg3]
[arg4]
这是我第一次尝试从php传递给bash。括号内的参数发布到数据库,没有任何问题。如何更改此选项以成功将参数传递给我的bash脚本? THX。
答案 0 :(得分:0)
变量在双引号字符串中扩展,而不是在单引号字符串中。
shell_exec("./bashscript.sh $_POST[arg1] $_POST[arg2] $_POST[arg3] $_POST[arg4]");
这是基本的PHP语法,与使用shell无关。
如果它包含shell元字符,你还应该在替换它之前使用escape_shell_arg
来转义每个参数。