6

groovyスクリプトからシェルコマンドを実行したい。私は以下をテストしました:

"mkdir testdir".execute()

これは問題なく機能します。ここで、ファイルを作成し、ファイルに何かを書き込んでから、テキストエディターを開いてファイルを表示したいと思いました。

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

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

これでgeditは正しく開きますが、ファイルに「hello」文字列はありません。これはどのように機能していますか?!?

4

1 に答える 1

6

次の行でリダイレクトを行うことはできません。

execute("echo hello > file")

したがって、ファイルには何も書き込まれません。これを処理する最も簡単な方法は、おそらくすべてのコマンドを単一のシェルスクリプトにラップしてから、このスクリプトを実行することです。

echoそれ以外の場合は、コマンドから(を使用せずに)標準出力を読み取り、Groovyで自分自身に> file書き込むことができます。file

または、次のことができます。

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

あなたのメソッドがメソッドを実行するだけなので、どちらが機能するはずexecuteですList.execute()

于 2012-09-20T12:54:30.233 に答える