我希望能够执行嵌套的shell命令.例如;
final String cmd = 'for i in pom.xml projects.xml; do find . -name $i | while read fname; do echo $fname; done;done'
Run Code Online (Sandbox Code Playgroud)
我尝试了以下语法,但无法让它运行.
def result = cmd.execute();def result = ['sh', '-c', cmd].execute();def result = ('sh -c for i in pom.xml projects.xml; do find . -name $i | while read fname; do echo $fname; done;done').execute()我很感激这里的帮助.
这应该工作:
def cmd = [
'bash',
'-c',
'''for i in pom.xml projects.xml
|do
| find . -name $i | while read fname
| do
| echo $fname
| done
|done'''.stripMargin() ]
println cmd.execute().text
Run Code Online (Sandbox Code Playgroud)
(我已经格式化了命令文本,所以它在这里看起来更好,你可以把它保存在一行中)
我也相信你的命令可以被替换为:
find . -name pom.xml -o -name projects.xml -print
Run Code Online (Sandbox Code Playgroud)
或者,在Groovy中:
def files = []
new File( '.' ).traverse() {
if( it.name in [ 'pom.xml', 'projects.xml' ] ) {
files << it
}
}
println files
Run Code Online (Sandbox Code Playgroud)