2015-07-21 94 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