Scripting

在 Linux 中獨立製作 Scala 腳本的方法?

  • March 19, 2020

程式 Scala說:

當您經常使用這些腳本時,使用 scala 呼叫腳本很乏味。在 Windows 和類 Unix 系統上,您可以創建獨立的 Scala 腳本,而無需使用 scala script-file-name 呼叫。對於類 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 上?

謝謝!

sh,

# src/main/scala/progscala2/toolslibs/secho

是評論,被忽略;

exec scala "$0" "$@"

導致目前程序將自身替換為scala,並將所有 shell 參數作為參數;

!#

沒有效果,因為此時 shell 已停止讀取腳本。

然而,Scala 通過忽略文件開頭的“標題”來處理腳本文件;#!該標頭從以(或::#!在 Windows 上)開頭的行開始,並以匹配!#( ::!#) 或/env. 的行結束。標題可以是單行,所以兩者

#!/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)。後者對應於文件

(!#是 , 的對稱#!, 在 Scala 中用於關閉由, 以與C 中的註釋#!類似的方式打開的“標題”。)/*``*/

引用自:https://unix.stackexchange.com/questions/573560