它是用标量代码编写的



scala解释器允许使用shebangs,但奇怪的是,scala在其上运行。有没有像这样的技巧来绕过这个缺陷呢?

#!在scala中必须以!#结束。例如:

#!/bin/bash
script_dir=$(cd $(dirname "$0") >/dev/null; pwd -P)
classes_dir=${script_dir}/build/classes
src_dir=${script_dir}/src
mkdir -p ${classes_dir}
scalac -d ${classes_dir} $(find ${src_dir} -name '*.scala')
exec /usr/bin/scala -classpath ${classes_dir} "$0" "$@"
!#

为什么不在构建脚本中调用scalac之前透明地剥离它们呢?

我认为这不是一个"模糊的shebang语法"的问题,而是一个"语言规范"的问题。
维基百科关于Shebang的文章确实提到:

shebang行的内容将被解释器自动忽略,因为#字符在许多脚本语言中是一个注释标记。
一些不使用hash标记开始注释的语言解释器,例如Scheme,仍然可能忽略shebang行

因此,如果scalac在其规范中没有像Scheme那样忽略第一行作为"脚本头"的指令,我们需要等待Jira案例5179。

相关内容

  • 没有找到相关文章

最新更新