在命令行参数中给出特殊字符

use*_*216 0 java

大家好!我编写了这个程序来读取命令行参数.

public class UseArgument {
public static void main(String args[])
{
    System.out.print("hi, ");
    System.out.print(args[0]);
    System.out.println(" How are you?");
}
}
Run Code Online (Sandbox Code Playgroud)

我试图通过命令行发送以下参数:

java UseArgument @!&^%
Run Code Online (Sandbox Code Playgroud)

并且它抛出如下错误.输出:

hi, @! How are you?
Run Code Online (Sandbox Code Playgroud)

''%''不被识别为内部或外部命令,可操作程序或批处理文件.

java UseArgument @!^%
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这种行为吗?这与正则表达式有关吗?

谢谢.西瓦基兰湾

ose*_*ose 5

您正在使用的某些特殊字符对于启动程序的shell具有意义.通过将字符放在引号中,您指示shell不根据其特殊含义处理这些字符.