为什么 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
如果我编写了一个仅打印命令行参数的 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