2011-10-01 22 views
9

O içeren bir metin dosyasını başlatarak Scala kabuk komut yazmak mümkündür:Shorter Scala Senaryo başlık

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

senaryo oluşturma kolaylaştırmak için, ben scalash adında bir yürütülebilir (belki bir BASH komut dosyası) yazmak istiyorum izin Scala komut dosyası üstbilgisini yalnızca bir satıra kısaltmak için:

#!/bin/scalash 

Mümkün mü? İsteğe bağlı parametreleri scalash'a geçirebilirsem, örneğin sınıf yolu bağımlılıkları eklemek için ekstra noktalar. (Tam olarak en başka dillerde olduğu gibi) aşağıdaki gibi

+0

Emin değilim, ama ben [ "tek parametre yalnızca"] (http düşünüyorum: // linux. die.net/man/2/execve) shebang hattının kısıtlanması işletim sisteminden geliyor; Bilmiyorum, bunun için yapabileceğiniz bir şey var mı? – Dirk

cevap

17

Scala 2.11, sen bunu yapabilir:

:

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

Scala 2.9.0.1 olarak, basitçe aşağıdaki komut dosyasını oluşturabilir

test.scala

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

ve yürütülebilir bunu yapmak.

Kullanım (sizin yürütülebilir yolu ilk satırı değiştirin):

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

İlk satırı '#!/Usr/bin/env scala' yapabilirsiniz. 'Scala' ikili 'PATH' içinde olduğu sürece çalışmalıdır, mutlaka/usr/bin/'. –

+1

2.10.2 çalıştırıyorum ve "line 2:! #: Komut bulunamadı" yı aldım – javadba

+0

@javadba - bir şekilde yanlış yorumlayıcıyı yakaladın gibi görünüyor. .scala dosyanızı bir yere yapıştırabilir misiniz? – Rogach

8

this pull request Bkz (this idi). Onunla ilişkili bir sorun yok - beğenirseniz, bir sorun açıp çekme isteğine yorum yapabilirsiniz.

Ayrıca, komut dosyalarını başlatmak için SBT'yi de kullanabilirsiniz. scalashere hakkında bilgi edinin.

DÜZENLEME

çekme isteği kabul edildi, bu yüzden bu çalışması gerekir: Burada

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

Bu bağlantı, tamamen ilgisiz bir çekme isteğini işaret eder. – javadba

+0

@javadba Teşekkürler. Bu bağlantı, svn deposunun eski bir aynasına işaret etti; bu, mevcut git deposuyla değiştirildi. Bunu da düzelttim, ve o zamandan beri taşınan diğer bağlantı da. –

+0

Umarım çekme kabul edilir. Mevcut durum, hata ayıklayıcıların karıştığı anlamına gelir - satır numaraları, # sayısı arasındaki satır sayısı kadar kapalıdır. ve! # – javadba