Search code examples
shellscalascriptingscala-script

Shorter Scala Script header


It's possible to write shell scripts in Scala by starting a text file with:

#!/bin/sh
exec scala "$0" "$@"
!#

To ease script creation, I would like to write an executable called scalash (perhaps a BASH script) allowing to shorten Scala script header to just one line:

#!/bin/scalash

Is it possible ? Extra points if I can pass optional parameters to scalash, for instance to add classpath dependencies.


Solution

  • In Scala 2.11, you can do it as follows (exactly as with most other languages):

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

    In Scala 2.9.0.1, you can simply create the following script:

    test.scala

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

    and make it executable. (change the first line to path to your executable)

    Usage:

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