1

我有一个程序将字符串作为参数并在文本文件中搜索字符串。

除非我*作为参数输入,否则一切正常。它打印出我目录中的所有文件名。*当我作为参数输入时,似乎它没有通过代码。

有谁知道发生了什么?

4

3 回答 3

6

您很可能会从命令行传递大量文件。这个链接可能很有趣: http ://en.wikipedia.org/wiki/Glob_(programming)#Syntax

基本上,当你说

java ... *

*字符(由您的 shell)扩展为当前目录中的文件列表。这发生在 java 甚至看到*字符之前,而 java 看到“file1 file2 ...”。

*在命令行中用单引号将字符括起来可能会有所帮助,如下所示:

'*'

或通过转义它:

\*
于 2012-12-12T07:50:32.477 回答
2

你的 shell*在它进入你的程序之前正在扩展它。尝试像这样逃避它

bash$ java MyClass \*
于 2012-12-12T07:50:16.303 回答
2

-在 正则表达式*中有特殊含义。

-所以你必须\\在它之前使用。

例如:

\\*
于 2012-12-12T07:52:12.243 回答