如果我编写一个只打印出命令行参数的Scala脚本(或App),我会发现它忽略了所有'!'字符。例如,如果我的脚本如下:
println(args(0))
我用它来运行:
scala MyScript "Hello!"
我得到了输出:
Hello
如果我用:
运行它scala MyScript "Hello! World!"
我也得到:
Hello
发生了什么事?这是什么目的!导致此行为的参数中的字符?
答案 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