您可以在單一行中要求整個工具組
//> using toolkit latest
或者,您只需要求 OS-Lib 的特定版本
//> using dep com.lihaoyi::os-lib:0.9.1
在您的 build.sbt
中,您可以新增對工具組的依賴關係
lazy val example = project.in(file("example"))
.settings(
scalaVersion := "3.2.2",
libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
)
或者,您只需要求 OS-Lib 的特定版本
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.9.1"
在您的 build.sc
檔案中,您可以新增對工具組的依賴關係
object example extends ScalaModule {
def scalaVersion = "3.2.2"
def ivyDeps =
Agg(
ivy"org.scala-lang::toolkit:0.1.7"
)
}
或者,您只需要求 OS-Lib 的特定版本
ivy"com.lihaoyi::os-lib:0.9.1"
啟動外部程序
要設定程序,請使用 os.proc
,然後實際啟動它,call()
val path: os.Path = os.pwd / "output.txt"
println(os.exists(path))
// prints: false
val result: os.CommandResult = os.proc("touch", path).call()
println(result.exitCode)
// prints: 0
println(os.exists(path))
// prints: true
請注意,proc
接受字串和 os.Path
。
讀取程序的輸出
(以下範例中的特定命令可能並非存在於所有機器上。)
在上面我們看到 call()
傳回 os.CommandResult
。我們可以使用 out.text()
存取結果的完整輸出,或使用 out.lines()
存取結果的各行。
例如,我們可以使用 bc
為我們進行一些數學運算
val res: os.CommandResult = os.proc("bc", "-e", "2 + 2").call()
val text: String = res.out.text()
println(text.trim.toInt)
// prints: 4
或讓 cal
顯示日曆
val res: os.CommandResult = os.proc("cal", "-h", "2", "2023").call()
res.out.lines().foreach(println)
// prints:
// February 2023
// Su Mo Tu We Th Fr Sa
// 1 2 3 4
// ...
自訂程序
call()
也會採用各種選用引數,這裡無法逐一說明。例如,您可以設定工作目錄 (cwd = ...
)、設定環境變數 (env = ...
),或重新導向輸入和輸出 (stdin = ...
、stdout = ...
、stderr = ...
)。在 OS-Lib 的 README 中尋找有關 call
方法的更多資訊。
此頁面的貢獻者
內容
- 簡介
- 使用 MUnit 進行測試
- 如何撰寫測試?
- 如何執行測試?
- 如何執行單一測試?
- 如何測試例外狀況?
- 如何撰寫非同步測試?
- 如何管理測試資源?
- MUnit 還有什麼功能?
- 使用 OS-Lib 處理檔案和程序
- 如何讀取目錄?
- 如何讀取檔案?
- 如何寫入檔案?
- 如何執行程序?
- OS-Lib 還有什麼功能?
- 使用 uPickle 處理 JSON
- 如何存取 JSON 中的值?
- 如何修改 JSON?
- 如何將 JSON 反序列化為物件?
- 如何將物件序列化為 JSON?
- 如何讀寫 JSON 檔案?
- uPickle 還有什麼功能?
- 使用 sttp 傳送 HTTP 要求
- 如何傳送要求?
- 如何建構 URI 和查詢參數?
- 如何傳送帶有主體的請求?
- 如何傳送和接收 JSON?
- 如何透過 HTTP 上傳檔案?
- sttp 還有什麼功能?