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

Why does Scala ignore exclamation points in command line arguments?

如果我编写了一个仅打印命令行参数的 Scala 脚本(或应用程序),我注意到它忽略了所有“!”人物。例如,如果我的脚本如下所示:

println(args(0))

我 运行 它与:

scala MyScript "Hello!"

我得到输出:

Hello

如果我 运行 它是:

scala MyScript "Hello! World!"

我还得到:

Hello

这是怎么回事?的目的是什么!导致此行为的参数中的字符?

!是历史替换。

在 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