2012-09-20 15 views
5

Mükemmel komut dosyamdan kabuk komutları yürütmek istiyorum. Aşağıdaki test:Kabuk komutlarını groovy'den doğru olarak nasıl çağıracağım

"mkdir testdir".execute() 

ve bu gayet güzel çalışıyor. Şimdi bir dosya yapmak, dosyaya bir şeyler yazmak ve dosyayı görüntülemek için bir metin düzenleyicisi açmak istedim.

def execute(cmd) { 
    def proc = cmd.execute() 
    proc.waitFor() 
} 

execute("touch file") 
execute("echo hello > file") 
execute("gedit file") 

Şimdi gedit doğru açılır ama ther dosyasında hayır "Merhaba" dizedir. Bu nasıl çalışıyor?!?

cevap

4

Sen doğrultusunda yönlendirmeyi yapamaz:

execute("echo hello > file") 

Yani hiçbir şey dosyaya yazılmış. Bunu işlemenin en kolay yolu, tüm komutlarınızı tek bir kabuk komut dosyasına sığdırmak, sonra da bu komut dosyasını çalıştırmaktır.

Aksi takdirde, standart çıktıyı echo komutundan (> file olmadan) okuyabilir ve ardından bunu Groovy'de file'a yazabilirsiniz.

Yoksa yapabilirsiniz: execute yöntemi olarak çalışması gerekir

execute([ 'bash', '-c', 'echo hello > file' ]) 

sadece the List.execute() method

+1

Ben groovy' 'hakkında hiçbir şey bilmiyorum gerçekleştirecektir; "execute" yönteminin komut satırını yürütme işleminden önce bir kabuk için Python 'subprocess 'modülünün shell = True' seçeneği olarak iletmesi için bir yöntem var mı? – chepner

+1

@chepner Aslında, haklısın ... bir yol var ... cevabına eklendi –

+0

Teşekkür ederim! Bu sadece iyi çalışıyor :) * cevap kabul edildi * – Moonlit

İlgili konular