scala的另一个优点是可以在shell下直接运行,在linux,windows平台上在代码文件开始需加上如下语句,

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

// windows
::#!
@echo off
call scala %0 %*
goto :eof
::!#

如果需指定classpath的话,则可以将-classpath加到上面exec scala之后。

在shell下类似脚本运行的好处自不必多说,一些简单的操作处理都可以借由scala完成,而不是再引入如python等语言。scala本身并不是动态脚本语言,不存在类似eval之类的操作,想是这脚本化的背后实际上是动态对代码编译运行的结果。

比如下面这个读取文件并进行相应正则处理的脚本,scala代码已经接近python的简洁了,

```scala
// scala
import scala.io._
import java.io._

val fileName = args(0)
val file = new File(fileName)
val pattern = "[a-z]+".r
Source.fromFile(file).getLines().foreach(line => {
 pattern.findAllIn(line).foreach(println)
})
// python
import re, sys

file = open(sys.argv[1])
pattern = re.compile("[a-z]+")
for line in file:
 print pattern.findall(line)