【发布时间】:2016-04-02 21:07:54
【问题描述】:
我在尝试从 Groovy 脚本运行复合 shell 命令时遇到了困难。这是您用“&&”分隔的命令之一,因此如果第一个命令失败,第二个命令将永远不会运行。无论出于何种原因,我都无法让它工作。我正在使用:
println "custom-cmd -a https://someurl/path && other-cmd -f parameter".execute([], new File('/some/dir')).text
shell 一直误解命令抛出错误,例如“custom-cmd -f invalid option”,就像它忽略了中间的“&&”。我也尝试使用分号,但并不幸运。我尝试使用直接的 Java API Runtime.getRuntime().exec() 并将命令拆分为一个数组。我尝试将命令用单引号括起来并将其提供给 '/bin/sh -c' 但没有任何效果。
如何从 Java 运行复合 shell 命令?我知道我过去曾这样做过,但我今天无法弄清楚。
【问题讨论】:
-
也许你需要转义 &&。
-
how to call shell commands from groovy correctly 的可能重复项。你不能使用像 && -c 并将其作为 one 参数传递(如果引用变得棘手,最容易通过字符串数组完成)