更短的Scala脚本标题

par*_*tic 9 shell scripting scala scala-script

可以通过以下方式启动文本文件来在Scala中编写shell脚本:

#!/bin/sh
exec scala "$0" "$@"
!#
Run Code Online (Sandbox Code Playgroud)

为了简化脚本创建,我想编写一个名为scalash(可能是BASH脚本)的可执行文件,允许将Scala脚本标题缩短为一行:

#!/bin/scalash
Run Code Online (Sandbox Code Playgroud)

可能吗 ?如果我可以传递可选参数scalash,例如添加类路径依赖项,则需要额外的点数.

Rog*_*ach 17

在Scala 2.11中,您可以按照以下方式执行此操作(与大多数其他语言完全相同):

#!/usr/bin/env scala
println(args.mkString(" "))
Run Code Online (Sandbox Code Playgroud)

在Scala 2.9.0.1中,您只需创建以下脚本:

test.scala

#!/usr/bin/scala
!#
println(args.mkString(" "))
Run Code Online (Sandbox Code Playgroud)

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

用法:

# ./test.scala Hello world!
Hello world!
Run Code Online (Sandbox Code Playgroud)

  • 你甚至可以创建第一行`#!/ usr/bin/env scala`.只要`scala`二进制文件在`PATH`中就可以工作,不一定在`/ usr/bin /`中. (6认同)

Dan*_*ral 8

看到这个拉动请求(是这个).没有与之相关的问题 - 如果您愿意,可以打开问题并对拉取请求发表评论.

您也可以使用SBT启动脚本.请参阅scalas 此处的信息.

编辑

拉取请求已被接受,因此这应该有效:

#!/usr/bin/env /path/to/scala
etc
Run Code Online (Sandbox Code Playgroud)