如何使用Groovy执行具有反引号的shell命令?

Dag*_*Dag 8 bash shell groovy backticks

我无法使用Groovy执行具有反引号的shell命令.一个简化的例子:

println "echo `date`".execute().text
Run Code Online (Sandbox Code Playgroud)

我四处寻找并试图弄清楚如何以某种方式逃脱它们,但没有运气.

Fai*_*aiz 12

如果你尝试会发生什么:

println ["bash", "-c", "echo `date`"].execute().text
Run Code Online (Sandbox Code Playgroud)

我的猜测是

"echo `date`".execute() 
Run Code Online (Sandbox Code Playgroud)

Runtime#exec(String)如果你正在调用execute()String ,那么java 将在下面使用.在这种情况下,这只是标记字符串并echo使用参数执行程序

`date`
Run Code Online (Sandbox Code Playgroud)

要么

$(date)
Run Code Online (Sandbox Code Playgroud)

但那是shell(bash)语法,必须通过bash执行.

  • println几乎没有问题,但将它分成两行:`def process = ["bash"," - c",command] .execute(); println process.text` (2认同)