2013-01-11 13 views
5

バック・チックを持つシェル・コマンドを実行するためにGroovyを使用することができません。簡単な例:Groovyを使用して、バックティックを持つシェルコマンドを実行するにはどうすればよいですか?

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

私は周りに検索し、何とかそれをエスケープする方法を見つけ出すことを試みたが、運なし。あなたがしようとした場合どうなります

答えて

10

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

私の推測がされることと

"echo `date`".execute() 

JavaのRuntime#exec(String)あなたは文字列の​​を呼び出した場合は、下に使用されます。その場合には、これは単純に文字列をトークン化し、引数

`date` 

または

$(date) 

でプログラムechoを実行しますが、それはシェル(bashの)構文だし、bashを介して実行されなければなりません。

+2

ほとんどのprintlnはこれに問題がありましたが、それを2行に分割しています: 'def process = [" bash "、" -c "、command] .execute(); println process.text' – Dag

関連する問題