为什么这个Java代码打印两个参数?
发布时间:2020-10-19 20:41:19 所属栏目:Linux 来源:互联网
导读:当我传递!clear作为输入时,下面的Java代码打印两个参数,如下所示.class Test{ public static void main(final String... arguments){ for(String argument : arguments){ System.out.println(a
当我传递!clear作为输入时,下面的Java代码打印两个参数,如下所示.
输出:
UPDATE 使用任何linux命令代替clear都会产生相同的结果.
我知道这与bash中的历史扩展有关,我可以逃脱!解决这个问题的角色. 但是,我很想知道此代码将上述两行打印为输出的确切原因.有人可以解释一下吗? 最佳答案 您正在Unix / Linux shell中工作,可能是bash.的! character是Unix shell中的特殊字符,因此您的命令被视为历史扩展.在历史扩展中,通常发生的事情是shell会向您显示命令扩展到的内容.如果您在历史记录中清除了命令,那么!clear的扩展将很简单,因此扩展命令将是java Test clear.然后shell运行命令. Java运行并且只看到一个参数 – 清楚,这就是它打印的内容. 相反,如果你运行
(用单引号!) Java将获得参数!明确,没有历史扩展. 如果您使用的单词不在shell的命令历史记录中,您将收到“未找到事件错误”.如果你使用一个单词,在你的shell历史中,用一个参数启动一个命令,整个命令及其所有参数都将被替换.这是bash的一部分,而不是Java. (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- LINUX教程:shell脚本示例:批量比较多个文件的内容是否相同
- 为什么sed在OSX中添加新行?
- 使用sed删除bash中的空格
- linux – 客户端向服务器发送延迟FIN ACK(500ms)
- linux – 如何将cpio(gnu,rhel 4)提取到指定目录?
- linux-kernel – 是否有可用的内核工具以合理的准确度测量中
- 是否有可能运行使用linux中的react-native开发的ios应用程序
- linux – 从grep输出中删除字符
- linux – 文件的物理大小在哪种情况下要小于逻辑大小?
- 使用scp提示错误ECDSA host key for [ip address] has chan