Java 如何在命令行中输入星号以便理解?
我使用php获取一个字符串,例如:“3*2”,并调用java(by exec())来计算它,但即使我将“*”替换为“\*”或不替换,它仍然不起作用。当我将这些参数传递给命令行时,它适用于“\*”,而不是“*”。如何输入星号以便命令行能够理解?我不想将我的程序使用“”的方式更改为java文件中的st else。我正在使用Ubuntu。你可以在php中使用它来逃避你的争论这是一个非常困惑的问题。我不得不猜测像“用命令行传递这些参数”这样的事情可能意味着什么,它们目前毫无意义。这个答案是基于猜测你的问题在英语中会是什么 似乎您可以从命令行调用Java程序,只要您转义shell为您提供的元字符。这是正常的,也是意料之中的,每个使用shell运行命令行语法中包含字符(如Java 如何在命令行中输入星号以便理解?,java,php,linux,command-line,Java,Php,Linux,Command Line,我使用php获取一个字符串,例如:“3*2”,并调用java(by exec())来计算它,但即使我将“*”替换为“\*”或不替换,它仍然不起作用。当我将这些参数传递给命令行时,它适用于“\*”,而不是“*”。如何输入星号以便命令行能够理解?我不想将我的程序使用“”的方式更改为java文件中的st else。我正在使用Ubuntu。你可以在php中使用它来逃避你的争论这是一个非常困惑的问题。我不得不猜测像“用命令行传递这些参数”这样的事情可能意味着什么,它们目前毫无意义。这个答案是基于猜测你的问
*
)的程序的人都应该很熟悉这一点
您的实际问题似乎是无法从PHP脚本中调用这个完全相同的Java程序,因为您正在将它作为提供给
exec()
的单个命令行参数传递给'3*2'
。同样,这里的问题很可能是另一个众所周知的问题。当使用命令行3\*2
(注意,没有引号)在shell中运行程序时,它实际上被shell拆分为三个命令行参数,3
、*
和2
,这三个参数是shell实际为底层execve()
系统调用提供的。这就是Java程序所期望的。您需要确保当您从PHP调用程序时,最终会发生这种情况。字符串变为“3\*2”,但java抛出错误:线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“.”显然java有一个剥离斜杠的函数。您应该尝试将问题弄清楚。也许用更多的细节来描述你的问题会有所帮助。