我使用php来获取一个字符串,例如:'3 * 2',并调用java(通过exec())来计算它,但即使我用'\ *'替换'* '也不行,它仍然无法正常工作。当我将这些参数传递给命令行时,它适用于'\ *',而不适用于'*'。我怎么能输入星号以便命令行可以理解?我不想将我的程序使用''的方式改为java文件中的st else。我正在使用Ubuntu。
答案 0 :(得分:1)
你可以在php中使用escapeshellarg()来逃避你的论点
答案 1 :(得分:0)
这是一个非常混乱的问题。我不得不猜测“使用命令行传递这些参数”之类的内容,这些内容毫无意义,可能意味着什么。这个答案是基于猜测你的英语问题。
似乎你可以从命令行调用你的Java程序,只要你逃脱shell为你设计的元字符。这是正常的和预期的,并且每个人都使用shell来运行在命令行语法中具有*
等字符的程序应该很熟悉。
您的实际问题似乎是您无法在PHP脚本中调用这个相同的Java程序,因为您将'3 * 2'
(带引号)作为提供给{{{1}的单个命令行参数传递给它1}}。同样,这里的问题很可能是另一个众所周知的问题。当使用命令行exec()
(没有引号,通知)通过shell运行程序时,shell实际上将它拆分为三个命令行参数3 \* 2
,{{1和3
这些是shell实际提供给底层*
系统调用的内容。这就是你的Java程序所期望的。您需要确保从PHP调用程序时最终会发生这种情况。