【发布时间】:2015-10-28 16:03:53
【问题描述】:
我正在尝试在 Jenkins (https://jenkins-ci.org) 脚本控制台中运行 find 命令,它允许从 Web 界面运行 groovy 脚本。
我的代码是:
ProcessBuilder pb = new ProcessBuilder();
pb.directory(new File("/var/lib/jenkins/jobs/myJob");
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
command = 'find . -name build.xml -exec echo \"{}\" \\;'
println(command)
pb.command(command.split(" "));
pb.start().waitFor();
web UI 会显示 println 的结果:
find . -name build.xml -exec echo "{}" \;
虽然 jenkins 日志 (/var/log/jenkins/jenkins.log) 记录以下错误:
find: missing argument to `-exec'
但是,如果我通过 shell 运行在 Web UI (find . -name build.xml -exec echo "{}" \;) 中输出的相同命令,则不会出现此类错误。
此外,如果我将\; 替换为+,则该命令有效!
因此,processBuilder 和 \\; 作为命令行参数传递有些可疑
【问题讨论】:
标签: groovy jenkins find processbuilder