2015-07-21 96 views
1

运行在bash此命令:如何在Groovy的外壳扩展?

echo * 

给出这个输出:

echo.groovy文件1文件2

经由常规运行相同的命令:

print 'echo *'.execute().text 

给出:

*

我意识到这是因为*扩展外壳环境进行的。所以我试试这个:

print '/bin/bash -c "echo *"'.execute().text 

这没有任何结果。

我怎么能在Groovy中执行shell命令同时服用shell扩展的好处?

回答

2

使用,而不是一个字符串列表,以确保参数传递正确和不被误解:

println(['/bin/bash', '-c', 'echo *'].execute().text) 
2

扩大对Raniz,现有的多行的shell脚本与所有的利益给出了答案壳的膨胀可以如下执行:

def command='''echo * 
START=1 
END=10 
for ((i=START; i<=END; i++)) 
do 
    echo "i: $i" 
done 
''' 

print (['/bin/bash', '-c', command].execute().text) 

输出:

echo.groovy file1 file2 
i: 1 
i: 2 
i: 3 
i: 4 
i: 5 
i: 6 
i: 7 
i: 8 
i: 9 
i: 10