Scripting
在 Linux 中獨立製作 Scala 腳本的方法?
程式 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 中的註釋#!
類似的方式打開的“標題”。)/*``*/