scalaでシェルスクリプトを書く

Scalaにオプションを渡す必要がない場合。

#!/usr/bin/env scala
!#

println("abc");

Scalaにクラスパスなどのオプションを渡す必要がある場合、シェルスクリプトの1行目(シェバング)にScalaの引数を渡せなかったので、しかたなく以下のように書いた。

#!/bin/sh
# -*- scala -*-

TMP_FILE=`mktemp /tmp/scala.XXXX.scala`
cat <<EOF > $TMP_FILE

println("abc");

EOF

scala -cp クラスパス $TMP_FILE
rm $TMP_FILE

2行目はEmacsで開いたときにScalaモードにするためのおまじない。mktempコマンドは安全に一時ファイルを生成するためのコマンド。

しかしScalaの起動に時間がかかりすぎるのがなんとかならないか。