2011-10-01 10 views
9

それはでテキストファイルを起動することによって、Scalaでシェルスクリプトを記述することが可能です:短いScalaのスクリプトヘッダ

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

スクリプトの作成を容易にするためには、私はscalashと呼ばれる実行可能ファイル(おそらくBASHスクリプトを)書きたいことができScalaスクリプトのヘッダーを1行に短縮する:

#!/bin/scalash 

可能ですか?オプションパスをscalashに渡すことができれば、例えばクラスパスの依存関係を追加するための追加ポイント。 (正確に他のほとんどの言語と同様に)、以下のように

+0

わからないが、私は[ "一つのパラメータのみ"](HTTPと思う:// linuxと。 die.net/man/2/execve)の制限は、OSに由来します。あなたがそれについて何かできるかどうかは分かりません。 – Dirk

答えて

17

スカラ座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

8

this pull requestthisだった)を参照してください。それに関連する問題はありません。気に入ったら、問題を開いてプルリクエストにコメントすることができます。

また、SBTを使用してスクリプトを開始することもできます。 scalashereに関する情報を参照してください。

EDIT

プル要求が受け入れられたので、これは動作するはずです:ここ

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

そのリンクは完全に無関係なプル要求を指しています。おかげさまで、 – javadba

+0

そのリンクはsvnリポジトリの古いミラーを指し、現在のgitリポジトリに置き換えられました。私はそれを固定しており、その後も移動してきた他のリンクもあります。 –

+0

私はプルが受け入れられることを願っています。現在の状況は、デバッガが混乱していることを意味します。行番号は、#!と!# – javadba