【问题标题】:How to pass a string variable as a shell script argument?如何将字符串变量作为 shell 脚本参数传递?
【发布时间】:2013-06-24 20:12:17
【问题描述】:

我有字符串变量

String var1 = "I am"
String var2 = "here"
String cmd = ("sh /path/shell.sh \""+var1+"\" \""+var2);
Runtime rt = Runtime.getRuntime();
rt.exec(cmd);

但是当我从我的 shell 脚本中执行 echo $1 $2 时,我得到的输出为 I am。为什么引号不起作用?

【问题讨论】:

  • 您忘记在 var2 之后关闭 quote(")
  • "from JAVA" 1) 标题中不需要包含主要标签。 2) 拼写为“Java”,而不是“JAVA”。 3) 阅读(并实施)所有When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并使用ProcessBuilder 构建Process还将String arg 拆分为String[] args,以说明本身包含空格的参数。

标签: java jsp shell process runtime.exec


【解决方案1】:

您需要按如下方式调用该命令:

Process process = new ProcessBuilder().command("sh", "/path/shell.sh", var1, var2);
Scanner scan = new Scanner(process.getInputStream());
while(scan.hasNextLine()) {
    //...
}
//...
scan.close();
process.destroy();

您可能也想将其包装在 try-catch 块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-21
    • 2016-01-08
    • 2020-08-19
    • 1970-01-01
    • 2013-08-13
    • 2018-06-25
    • 2022-12-09
    • 1970-01-01
    相关资源
    最近更新 更多