如何从 scala 应用程序将参数传递给 shell 脚本?

发布于 2025-01-18 08:19:43 字数 854 浏览 0 评论 0原文

我有一个 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)
  }

}

HelloWorld.sh

#!/bin/sh
# This is a comment!
echo Hello World

当前输出:

Hello World

预期输出:

Hello World,arg1 arg2(其中 arg1 和 arg2 是从 scala 传递的)

I have a Scala application which needs to call the shell script by passing some arguments to it.

I followed the below answer and I am able to call the shell script from scala app without passing any arguments. But I have no idea how to pass the arguments.

Execute shell script from scala application

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)
  }

}

HelloWorld.sh

#!/bin/sh
# This is a comment!
echo Hello World

Current Output:

Hello World

Expected Output:

Hello World, arg1 arg2 (where arg1 and arg2 were passed from scala)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦幻之岛 2025-01-25 08:19:43

Scala 文档<中有详细解释/a> 但我最喜欢的方法是这样的:

List("echo", "-e", "This \nis \na \ntest").!!

只需在列表上调用 !! 方法,其中第一个元素是脚本/命令,其余元素是参数/选项。

It is explained in great detail in Scala docs but my favorite way is this:

List("echo", "-e", "This \nis \na \ntest").!!

simply call the !! method on a list where the first element is the script/command and the remaining elements are the args/options.

怕倦 2025-01-25 08:19:43

除了 @goosefand的答案外,我还添加了如何接收来自Shell脚本中Scala的参数。

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)
  }

}

shell脚本:

#!/bin/sh
echo Processing files $1 $2

输出:

Hello world arg1 arg2

In addition to @goosefand's answer, I have also added how to receive the arguments which is passed from scala in the shell script.

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)
  }

}

Shell Script:

#!/bin/sh
echo Processing files $1 $2

Output:

Hello world arg1 arg2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文