【问题标题】:Shebangs in scalac codescalac代码中的Shebangs
【发布时间】:2011-11-11 00:55:25
【问题描述】:

scala 解释器允许 shebangs,但奇怪的是,scalac borks on them。有没有像these 这样的技巧来绕过这个漏洞?

【问题讨论】:

    标签: scala compiler-construction shebang scalac


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我不想剥离任何代码。如果有必要,我愿意使用晦涩的 shebang 语法来实现这一点。
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        • 2021-05-02
        相关资源
        最近更新 更多