在Scala编程中,它介绍了如何从批处理文件(link)运行Scala脚本。
适用于Windows
::#!
@echo off
call scala %0 %*
goto :eof
::!#
我在使用Google ::#!
时遇到问题。这是什么意思?我知道::
表示注释,在Unix #!
中是要使用的shell的方向,但究竟是什么呢?还有::!#
?
%0 %*
究竟是什么意思,是否有必要像这样表达?
是否可以从同一个批处理文件中运行多个脚本?
答案 0 :(得分:15)
这是一个噱头,但它的确有效。它打算复制Unix shell调用特定命令来处理shell文件的能力。所以,这是解释:
::#!
以::
开头的行是Windows shell中的注释,因此这只是一个注释。
@echo off
不要显示从此处开始执行的行。开头的@
确保此行本身不会显示。
call scala %0 %*
将执行转移到scala
脚本。 %0
表示此文件本身的名称(以便scala可以找到它),%*
是在执行时传递的参数。
例如,假设这些行位于名为count.bat
的文件中,您可以通过键入count 1 2 3
来调用它。在这种情况下,该行将执行scala count 1 2 3
- 在这种情况下,您将收到错误。您必须通过键入count.bat
来调用它。
goto :eof
完成执行脚本。
::!#
另一条评论专栏。
所以,这就是诀窍...... Scala一旦被调用,就会发现文件作为第一个参数传递,检查第一行是::#!
,忽略行::!#
以外的所有内容所以,然后执行文件的其余部分(::!#
之后的行)作为Scala脚本。
换句话说,它不是智能的Windows外壳,而是Scala。 : - )
答案 1 :(得分:2)
%0表示程序名称(可能是脚本文件名),%*表示命令行参数列表。 %1表示第一个参数...