スカラープログラミング説明する:
Scalaでスクリプトを頻繁に使用すると、スクリプトを呼び出すのは面倒です。 WindowsおよびUnixファミリーシステムでは、scalaスクリプトファイル名で呼び出す必要がないスタンドアロンScalaスクリプトを生成できます。 Unix シリーズシステムの場合、次の例は実行可能なスクリプトを作成する方法を示しています。 chmod +x sechoのように権限を実行可能にする必要があることに注意してください。
#!/bin/sh # src/main/scala/progscala2/toolslibs/secho exec scala "$0" "$@" !# print("You entered: ") args.toList foreach { s => printf("%s ", s) } println
使用方法は次のとおりです。
$ secho Hello World You entered: Hello World
これが何を意味するのか知りたいです。
# src/main/scala/progscala2/toolslibs/secho
exec scala "$0" "$@"
!#
存在するsh
?
Scalaスクリプトを次のようにスタンドアロンにすることができます。
#!/path/to/scala
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
Linuxでは?
ありがとうございます!
答え1
存在するsh
、
# src/main/scala/progscala2/toolslibs/secho
無視されたコメントです。
exec scala "$0" "$@"
現在のプロセスは自分自身をに置き換え、scala
すべてのシェル引数を引数に置き換えます。
!#
この時点で、シェルがスクリプトの読み取りを停止したため、何の効果もありません。
しかし、Scalaはファイルの先頭の「ヘッダ」を無視してスクリプトファイルを処理します。このヘッダーは#!
(またはWindowsの場合)行で始まり::#!
、次に終わります。一致!#
(::!#
)または/env
。タイトルは1行だけです。
#!/path/to/scala
!#
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
そして
#!/usr/bin/env scala
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
作業します(後者はオンにscala
する必要がありますPATH
)。後者は次のとおりです。文書。
(スカラーでは、注釈とCの.と同様の方法でによって開かれた「タイトル」を閉じるために使用されるの!#
対称です。)#!
#!
/*
*/