Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to call shell commands from groovy correctly

i want to execute shell commands from my groovy script. I tested the following:

"mkdir testdir".execute()

and this just works fine. Now i wanted to make a file, write something to the file and then open a text editor to view the file.

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

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

Now gedit opens correctly but ther is no "hello" string in the file. How is this working?!?

like image 245
Moonlit Avatar asked Sep 20 '12 12:09

Moonlit


People also ask

How do I run shell commands in Groovy?

Executing shell commands using Groovy is very easy. For example If you want to execute any unix/linux command using groovy that can be done using execute() method and to see the output of the executed command we can append text after it.


1 Answers

You cannot do redirection in the line:

execute("echo hello > file")

So nothing gets written to the file. The easiest way to handle this is probably to wrap all your commands into a single shell script, then execute this script.

Otherwise, you can read the standard output from the echo command (without the > file), and then write this to file yourself in Groovy.

Or you can do:

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

Which should work as your execute method will just perform the List.execute() method

like image 78
tim_yates Avatar answered Oct 09 '22 02:10

tim_yates