how to call shell commands from groovy correctly

只谈情不闲聊 提交于 2019-12-07 06:42:42

问题


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


回答1:


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



来源:https://stackoverflow.com/questions/12512919/how-to-call-shell-commands-from-groovy-correctly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!