我有一個 Scala 應用程式,它需要通過傳遞一些引數來呼叫 shell 腳本。
我遵循以下答案,我可以從 scala 應用程式呼叫 shell 腳本,而無需傳遞任何引數。但我不知道如何傳遞論點。
從 scala 應用程式執行 shell 腳本
object ScalaShell {
def main(args : Array[String]): Unit = {
val output = Try("//Users//xxxxx//Scala-workbench//src//main//scala//HelloWorld.sh".!!) match {
case Success(value) =>
value
case Failure(exception) =>
s"Failed to run: " exception.getMessage
}
print(output)
}
}
你好世界.sh
#!/bin/sh
# This is a comment!
echo Hello World
電流輸出:
你好世界
預期輸出:
Hello World,arg1 arg2(其中 arg1 和 arg2 是從 scala 傳遞的)
uj5u.com熱心網友回復:
在Scala 檔案中有詳細的解釋,但我最喜歡的方式是:
List("echo", "-e", "This \nis \na \ntest").!!
只需呼叫!!串列中的方法,其中第一個元素是腳本/命令,其余元素是引數/選項。
uj5u.com熱心網友回復:
除了@goosefand 的回答,我還添加了如何接收從 shell 腳本中的 scala 傳遞的引數。
斯卡拉:
object ScalaShell {
def main(args : Array[String]): Unit = {
val output = Try(Seq("//Users//xxxxx//Scala-workbench//src//main//scala//HelloWorld.sh", "arg1","arg2").!!) match {
case Success(value) =>
value
case Failure(exception) =>
s"Failed to run: " exception.getMessage
}
print(output)
}
}
外殼腳本:
#!/bin/sh
echo Processing files $1 $2
輸出:
Hello world arg1 arg2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455958.html
