较短的斯卡拉脚本头

较短的斯卡拉脚本头

问题描述:

有可能通过启动一个文本文件,写在Scala的shell脚本:较短的斯卡拉脚本头

#!/bin/sh 
exec scala "$0" "[email protected]" 
!# 

为了缓解剧本创作,我想编写称为scalash一个可执行文件(可能是一个bash脚本)允许将Scala脚本标题缩短为一行:

#!/bin/scalash 

这可能吗?如果我可以将可选参数传递到scalash,例如添加类路径依赖关系,则需要加分。

+0

不知道这里,但我认为[ “只有一个参数”(HTTP:// Linux操作系统。 die.net/man/2/execve)shebang行的限制来自操作系统;不知道,你是否可以做些什么。 – Dirk

在斯卡拉2.11,您可以按如下(正好与大多数其他语言)做到这一点:

#!/usr/bin/env scala 
println(args.mkString(" ")) 

在斯卡拉2.9.0.1,你可以简单地创建以下脚本:

test.scala

#!/usr/bin/scala 
!# 
println(args.mkString(" ")) 

并使其可执行。 (第一行路径更改为你的可执行文件)

用法:

# ./test.scala Hello world! 
Hello world! 
+6

你甚至可以制作第一行'#!/ usr/bin/env scala'。只要'scala'二进制文件在'PATH'中就可以工作,而不一定在'/ usr/bin /'中。 –

+1

我正在运行2.10.2并获得“第2行:!#:命令未找到” – javadba

+0

@javadba - 似乎你以某种方式抓住了错误的解释器。你能把你的.scala文件粘贴到什么地方吗? – Rogach

this pull request(为this)。没有与之相关的问题 - 如果您喜欢它,您可以打开问题并对拉取请求发表评论。

您也可以使用SBT来启动脚本。查看关于scalashere的信息。

编辑

拉请求被接受,所以这应该工作:

#!/usr/bin/env /path/to/scala 
etc 
+0

该链接指向完全不相关的拉取请求。 – javadba

+0

@javadba谢谢。该链接指向svn存储库的旧镜像,该镜像已由当前的git存储库取代。我已经解决了这个问题,另外还有另一个链接,因为这个链接也已经移动了。 –

+0

我希望拉被接受。目前的情况意味着调试人员感到困惑 - 行号与#!之间的行数不同和!# – javadba