2013-01-11 17 views
5

मैं बैकटिक्स वाले शेल कमांड को निष्पादित करने के लिए ग्रोवी का उपयोग करने में असमर्थ हूं। एक सरलीकृत उदाहरण:बैकटिक्स वाले शेल कमांड को निष्पादित करने के लिए मैं ग्रोवी का उपयोग कैसे कर सकता हूं?

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

मैंने चारों ओर खोज की और किसी भी तरह से बचने के तरीके को जानने का प्रयास करने की कोशिश की, लेकिन बिना किस्मत के।

उत्तर

10

अगर आप कोशिश क्या होता है:

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

मेरा अनुमान होगा कि साथ

"echo `date`".execute() 

जावा के Runtime#exec(String), नीचे इस्तेमाल किया जाएगा यदि आप एक स्ट्रिंग पर execute() बुला रहे थे। जो मामले में, यह बस स्ट्रिंग tokenizes और तर्क

`date` 

या

$(date) 

साथ कार्यक्रम echo कार्यान्वित लेकिन यह है कि खोल (बैश) वाक्य रचना है, और पार्टी के माध्यम से निष्पादित किया जाना चाहिए।

+2

लगभग, println के साथ समस्याएं थीं, लेकिन इसे दो पंक्तियों में विभाजित किया गया: 'def process = [" bash "," -c ", command] .execute(); println process.text' – Dag