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?!?
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