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

8

我无法使用Groovy执行带有反引号的shell命令。以下是一个简化的示例:

println "echo `date`".execute().text

我搜索了一下,试图想出如何以某种方式逃脱它们,但没有成功。

1个回答

12

如果您尝试使用以下代码会发生什么:

println ["bash", "-c", "echo `date`"].execute().text

我的猜测是,由于

标签的存在,文本被解释为一个段落。

"echo `date`".execute() 

如果您在字符串上调用execute(),那么Java的Runtime#exec(String)将被使用。这种情况下,它只是将字符串分解为标记,并使用参数执行程序echo

`date`


$(date)

但这是shell (bash)的语法,必须通过bash执行。


2
几乎可以肯定,println在处理这个问题时遇到了困难,但将其拆分成两行就解决了:def process = ["bash", "-c", command].execute(); println process.text - Dag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接