为什么Scala忽略命令行参数中的感叹号?

时间:2015-03-06 03:20:17

标签: scala command-line-arguments

如果我编写一个只打印出命令行参数的Scala脚本(或App),我会发现它忽略了所有'!'字符。例如,如果我的脚本如下:

println(args(0))

我用它来运行:

scala MyScript "Hello!"

我得到了输出:

Hello

如果我用:

运行它
scala MyScript "Hello! World!"

我也得到:

Hello

发生了什么事?这是什么目的!导致此行为的参数中的字符?

1 个答案:

答案 0 :(得分:1)

!是历史替代。

在EOL上与scala MyScript hello!一起使用!,看它是否有效。

http://www.gnu.org/software/bash/manual/bashref.html#Event-Designators

http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes

在Windows上,"scala.bat"命令脚本已启用延迟扩展。

http://en.wikibooks.org/wiki/Windows_Batch_Scripting

http://en.wikibooks.org/wiki/Windows_Batch_Scripting#SETLOCAL

http://en.wikibooks.org/wiki/Windows_Batch_Scripting#Command-line_arguments

禁用!myvar!的解释:

C:\Users\you> scala greeting.script "hello^!"
hello!

C:\Users\you> set world= Bob

C:\Users\you> scala greeting.script "hello!world!"
hello Bob