Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在命令行中输入星号以便理解?_Java_Php_Linux_Command Line - Fatal编程技术网

Java 如何在命令行中输入星号以便理解?

Java 如何在命令行中输入星号以便理解?,java,php,linux,command-line,Java,Php,Linux,Command Line,我使用php获取一个字符串,例如:“3*2”,并调用java(by exec())来计算它,但即使我将“*”替换为“\*”或不替换,它仍然不起作用。当我将这些参数传递给命令行时,它适用于“\*”,而不是“*”。如何输入星号以便命令行能够理解?我不想将我的程序使用“”的方式更改为java文件中的st else。我正在使用Ubuntu。你可以在php中使用它来逃避你的争论这是一个非常困惑的问题。我不得不猜测像“用命令行传递这些参数”这样的事情可能意味着什么,它们目前毫无意义。这个答案是基于猜测你的问

我使用php获取一个字符串,例如:“3*2”,并调用java(by exec())来计算它,但即使我将“*”替换为“\*”或不替换,它仍然不起作用。当我将这些参数传递给命令行时,它适用于“\*”,而不是“*”。如何输入星号以便命令行能够理解?我不想将我的程序使用“”的方式更改为java文件中的st else。我正在使用Ubuntu。

你可以在php中使用它来逃避你的争论

这是一个非常困惑的问题。我不得不猜测像“用命令行传递这些参数”这样的事情可能意味着什么,它们目前毫无意义。这个答案是基于猜测你的问题在英语中会是什么

似乎您可以从命令行调用Java程序,只要您转义shell为您提供的元字符。这是正常的,也是意料之中的,每个使用shell运行命令行语法中包含字符(如
*
)的程序的人都应该很熟悉这一点


您的实际问题似乎是无法从PHP脚本中调用这个完全相同的Java程序,因为您正在将它作为提供给
exec()
的单个命令行参数传递给
'3*2'
。同样,这里的问题很可能是另一个众所周知的问题。当使用命令行
3\*2
(注意,没有引号)在shell中运行程序时,它实际上被shell拆分为三个命令行参数,
3
*
2
,这三个参数是shell实际为底层
execve()
系统调用提供的。这就是Java程序所期望的。您需要确保当您从PHP调用程序时,最终会发生这种情况。

字符串变为“3\*2”,但java抛出错误:线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“.”显然java有一个剥离斜杠的函数。您应该尝试将问题弄清楚。也许用更多的细节来描述你的问题会有所帮助。