斯卡拉代码中的Shebangs

时间:2011-11-11 00:55:25

标签: scala compiler-construction shebang scalac

scala解释器允许shebangs,但奇怪的是,scalac borks在他们身上。是否有像these这样的技巧来解决这个漏洞?

3 个答案:

答案 0 :(得分:2)

#!在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" "$@"
!#

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我不认为这是一个“模糊的shebang语法”的问题,而是一个“语言规范”问题。
Wikipedia article on Shebang确实提到了:

  

解释器会自动忽略shebang行的内容,因为#字符是许多脚本语言中的注释标记。
  一些不使用哈希标记开始评论的语言翻译,例如Scheme,仍然可能会忽略shebang行

因此,如果scalac在其规范中没有将第一行忽略为"script header" like Scheme的指令,我们需要等待Jira case 5179