为什么*作为“java”的命令行参数不能按预期工作?

时间:2012-12-12 07:48:55

标签: java

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

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

任何人都知道发生了什么事?

3 个答案:

答案 0 :(得分:6)

您很可能从命令行传递一组文件。此链接可能有用: http://en.wikipedia.org/wiki/Glob_(programming)#Syntax

基本上,当你说

java ... *

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

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

'*'

或逃避它:

\*

答案 1 :(得分:2)

你的shell正在扩展*才能进入你的程序。试着像这样逃避它

bash$ java MyClass \*

答案 2 :(得分:2)

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

- 因此您必须先使用\\

<强>例如

\\*