groovyの文字列の実行メソッドに空白を含む引数を与える方法を教えてください。groovyは空白を含むパラメータで実行する
println 'ls "/tmp/folder with spaces"'.execute().text
これは、ls呼び出しに3つの壊れた引数を与えるでしょう。
groovyの文字列の実行メソッドに空白を含む引数を与える方法を教えてください。groovyは空白を含むパラメータで実行する
println 'ls "/tmp/folder with spaces"'.execute().text
これは、ls呼び出しに3つの壊れた引数を与えるでしょう。
トリックは、リストを使用していた:リストを使用して
println(['ls', '/tmp/folder with spaces'].execute().text)
スペースをエスケープしようとしましたか?
println 'ls /tmp/folder\ with\ spaces'.execute().text
はい、機能しませんでした。 –
は私には不格好なビットを感じています。
これは、仕事をするだろうが:
def exec(act) {
def cmd = []
act.split('"').each {
if (it.trim() != "") { cmd += it.trim(); }
}
return cmd.execute().text
}
println exec('ls "/tmp/folder with spaces"')
より複雑な例:
println runme('mysql "-uroot" "--execute=CREATE DATABASE TESTDB; USE TESTDB; \\. test.sql"');
唯一の欠点は、すべての引数の前後に引用符を置く必要があり、私はそれと一緒に暮らすことができます!
申し訳ありませんが、上記のトリックのどれも私のために働いていません。 この恐ろしいコードは、唯一のものです。
def command = 'bash ~my_app/bin/job-runner.sh -n " MyJob today_date=20130202 " '
File file = new File("hello.sh")
file.delete()
file << ("#!/bin/bash\n")
file << (command)
def proc = "bash hello.sh".execute() // Call *execute* on the file
コマンドが動的に生成されるか、ユーザーに求められた場合、この解決策は機能しません。確かに、引用符を数えるのが難しい解析ではありません... – Uberto