【问题标题】:Shell script call command line applicationShell 脚本调用命令行应用程序
【发布时间】:2013-09-08 17:50:30
【问题描述】:

我有一个 Java 程序,我想在 linux shell 脚本中调用它。 Java 程序从命令行获取用户输入。

我在某处读到我可以使用 echo 来模仿用户输入,如下所示:

 java myProgram
 echo 1000
 echo

但这对我不起作用,程序仍在等待用户输入。有什么我做错了吗?我无法想象这是一项艰巨的任务。

【问题讨论】:

    标签: java linux shell


    【解决方案1】:

    您可以使用echo,但在管道中。

    echo 1000 | java myProgram
    

    如果要发送文件,可以使用cat

    cat file.txt | java myProgram
    

    【讨论】:

    • +1。在一些shell中,比如Bash,第一个版本也可以写成java myProgram <<<1000
    • @SotiriosDelimanolis 号标准输入与传递参数不同。
    • @SotiriosDelimanolis:不;管道将一个简单命令的标准输出传递到下一个命令的标准输入。要将命令的输出作为参数传递,您可以编写类似 java myProgram "$(the_command)"the_command | xargs java myProgram 的内容。
    【解决方案2】:

    为什么不直接将值作为参数传入

    java myProgram 1000
    

    【讨论】:

    • 程序似乎采用标准输入。
    • Ofc 需要进行一些重构,但应该简化
    【解决方案3】:

    我认为你应该找到你的java进程的进程id,然后写入它的/proc目录。

    说Java进程的id是4321,然后输出到

    /proc/4321/fd/0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多