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

Joh*_*ohn 1 java

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

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

有谁知道发生了什么?

Cor*_*all 6

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

基本上,当你说

java ... *
Run Code Online (Sandbox Code Playgroud)

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

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

'*'
Run Code Online (Sandbox Code Playgroud)

或逃避它:

\*
Run Code Online (Sandbox Code Playgroud)