【发布时间】:2017-12-16 23:08:41
【问题描述】:
当我将!clear 作为输入传递时,下面的 Java 代码会打印两个参数,如下所示。
class Test{
public static void main(final String... arguments){
for(String argument : arguments){
System.out.println(argument);
}
}
}
输出:
$ java Test !clear
java Test clear
clear
更新
使用任何 linux 命令代替 clear 会产生相同的结果。
$ java Test !pwd
java Test pwd
pwd
$ java Test !ls
java Test ls
ls
我知道这与 bash 中的历史扩展有关,我可以逃脱 !字符来解决这个问题。
但是,我很想知道这段代码打印上述两行作为输出的确切原因。有人能解释一下吗?
【问题讨论】:
-
@P.An 你描述的是
$,而不是!。$foo进行变量扩展。!foo进行历史扩展。