我有一个程序,它接受一个字符串作为参数,并在文本文件中搜索字符串。
除非我输入*
作为参数,否则一切都很完美。它打印出我目录中的所有文件名。当我输入*
作为参数时,似乎它没有通过代码。
任何人都知道发生了什么事?
答案 0 :(得分:6)
您很可能从命令行传递一组文件。此链接可能有用: http://en.wikipedia.org/wiki/Glob_(programming)#Syntax
基本上,当你说
时java ... *
将*
字符(由您的shell)扩展为当前目录中的文件列表。这发生在java甚至看到*
字符之前,而java则看到“file1 file2 ...”。
在命令行中使用单引号括起*
字符可能会有所帮助,如下所示:
'*'
或逃避它:
\*
答案 1 :(得分:2)
你的shell正在扩展*
才能进入你的程序。试着像这样逃避它
bash$ java MyClass \*
答案 2 :(得分:2)
- *
在正则表达式中具有特殊含义。
- 因此您必须先使用\\
。
<强>例如强>
\\*