scalac 代码中的 Shebangs

发布于 2024-12-14 17:21:54 字数 142 浏览 2 评论 0原文

scala 解释器允许 shebang,但奇怪的是,scalac 对它们不感兴趣。有没有像这些这样的技巧来解决这个缺陷?

The scala interpreter allows shebangs, but strangely, scalac borks on them. Are there any tricks like these to get around this flaw?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

没企图 2024-12-21 17:22:00

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

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


因此,如果 scalac 在其规范中没有忽略第一行的指令,如 "脚本标头",例如Scheme,我们需要等待您的吉拉案例第5179章

I don't think this is a question of "obscure shebang syntax", but rather a "language specification" issue.
The Wikipedia article on Shebang does mention:

The contents of the shebang line will be automatically ignored by the interpreter, because the # character is a comment marker in many scripting languages.
Some language interpreters that do not use the hash mark to begin comments, such as Scheme, still may ignore the shebang line.

So if scalac hasn't in its specification the directives to ignore the first lines as "script header" like Scheme, we need to wait on your Jira case 5179.

假面具 2024-12-21 17:21:57

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

Why not strip them transparently before invoking scalac in your build script?

浅黛梨妆こ 2024-12-21 17:21:56

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

#! in scala must be closed with !#. For example:

#!/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" "$@"
!#
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文