Java 命令行参数:简单打印不适用于“@%&^%”(不带引号)。请解释
Java command line argument: Simple print not working with "@%&^%" (without quotes). Please explain
这是一个名为 Java class 的测试:
public class Test
{
public static void main(String[] args)
{
System.out.print(args[0]);
}
}
当我用参数“Bob”编译并运行它时,不带引号,例如:java Test.java Bob
,它运行很好并打印“嗨,鲍勃。如何你是?”。在终端上,一切顺利:
xyz@my-iMac src % java Test.java Bob
Bob
现在,当我使用不带引号的参数“@%&^%”时,例如:java Test.java @%&^%
,我在终端上得到了这个:
xyz@my-iMac src % java Test.java @%&^%
[1] 12097
zsh: command not found: ^%
xyz@my-iMac src % @%
[1] + done java Test.java @%
xyz@my-iMac src %
我正在使用 MacOS 终端 zsh 进行编译和 运行 java。 MacOS 上的用户名是 xyz,iMac 的名称是 my-iMac。文件 Test.java 位于文件夹 src.
我猜是终端在做有趣的事情。但是我不知道是什么或者我可能是错的。
谁能解释一下这是怎么回事。
字符 &
在大多数 shell 中表示“运行 this in the background”。
然后 zsh 尝试执行下一个 ^%
这确实是一个不存在的命令。
如果你加上引号(正如你已经尝试过的那样)或用 \
保护 &
那么它就可以工作
java Test.java @%\&^%
@%&^%
这是一个名为 Java class 的测试:
public class Test
{
public static void main(String[] args)
{
System.out.print(args[0]);
}
}
当我用参数“Bob”编译并运行它时,不带引号,例如:java Test.java Bob
,它运行很好并打印“嗨,鲍勃。如何你是?”。在终端上,一切顺利:
xyz@my-iMac src % java Test.java Bob
Bob
现在,当我使用不带引号的参数“@%&^%”时,例如:java Test.java @%&^%
,我在终端上得到了这个:
xyz@my-iMac src % java Test.java @%&^%
[1] 12097
zsh: command not found: ^%
xyz@my-iMac src % @%
[1] + done java Test.java @%
xyz@my-iMac src %
我正在使用 MacOS 终端 zsh 进行编译和 运行 java。 MacOS 上的用户名是 xyz,iMac 的名称是 my-iMac。文件 Test.java 位于文件夹 src.
我猜是终端在做有趣的事情。但是我不知道是什么或者我可能是错的。
谁能解释一下这是怎么回事。
字符 &
在大多数 shell 中表示“运行 this in the background”。
然后 zsh 尝试执行下一个 ^%
这确实是一个不存在的命令。
如果你加上引号(正如你已经尝试过的那样)或用 \
保护 &
那么它就可以工作
java Test.java @%\&^%
@%&^%