Java中主函数中args的拆分规则



我遇到了一个奇怪的问题:

我创建了一个单独的程序来打印所有收到的参数,下面是代码:

public class Test {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i ++) {
            System.out.println(args[i]);
        }
    }
}   

然后我构建了一个jar文件,并运行以下命令:

java -jar test.jar test&1    

然而,它并没有像预期的那样打印"test&1"。其结果是:

test
'1'is not recognized as an internal or external command,operable program or batch file.    

所以我的问题是:args的分离是什么?如果我真的需要接受"测试&1",我该怎么办?

谢谢!

这与Java无关。&字符是Windows shell的特殊字符(我可以从错误消息中判断它是Windows):它在一行中分隔两个命令,所以您要做的是告诉shell运行java -jar test.jar test,然后运行1。如果你想把test&1传递给Java,你必须把它放在引号里:

java -jar test.jar "test&1"

&在*nix shell上也很特殊(但以不同的方式,它在子shell中运行命令)。在那里,您可以使用如上所述的引号,或者将放在&之前。但不是在Windows上。

最新更新