2014-09-19 39 views
0

我在网页上有一个菜单系统,它允许用户从多个选项中进行选择。当选择一个选项时,我想通过一个函数将它作为参数传递。我想评估看看选择了什么,然后执行提供arg的脚本。我是PHP新手,但很高兴能够学习。下面是我试图消化相关解释后的最佳尝试。在PHP中将函数的arg传递给bash脚本

public function getData($args=array()) { 

     if(isset($args["what"])){ 
      exec(
       '/home/foo/myscript.((string)$args["what"]'); 
     } 
     else{ 
      exec(
       '/home/foo/myscript()'); 
     } 
    } 

我怀疑我没有足够的篇幅占了shell脚本和参数之间正确的,但我已经尝试了所有看似合理变化会失败。我在正确的轨道上还是应该以另一种方式一起尝试?

+1

你在bash中做了什么,你可以重写php – 2014-09-19 00:17:27

+0

感谢您的快速响应。问题的核心是我从PHP获取参数,并且需要将其提供给bash。我不知道应该是什么样子。也许我还没有看到完整的图片,但我认为我的问题不仅仅是将bash重写为PHP。 – Ryan 2014-09-19 00:23:03

回答

0
exec('/home/foo/myscript.((string)$args["what"]'); 

这样做的问题是当您开始尝试连接PHP时,您仍然在您的字符串中。先关闭字符串。

exec('/home/foo/myscript ' . (string)$args["what"]); 

接下来,你会希望将参数传递给脚本以保证它们不会被误解。检出escapeshellarg()http://php.net/manual/en/function.escapeshellarg.php

exec('/home/foo/myscript ' . escapeshellarg((string)$args["what"])); 

而且,你可能不需要(string)因为escapeshellarg()只使用字符串反正。无论该参数是什么,都会被转换为字符串。

exec('/home/foo/myscript ' . escapeshellarg($args['what']));