【发布时间】:2017-09-29 08:11:46
【问题描述】:
我正在使用一个 groovy 脚本来计算我的构建持续时间并将一个指标发布到 Hosted Graphite,从命令行将产生以下 curl 并产生预期效果:
echo {someMetricHere} | nc carbon.hostedgraphite.com 2003
但是,在我的 groovy 脚本中,生成指标的最后一步是运行以下命令:
"echo "+ metric +" | nc carbon.hostedgraphite.com 2003".execute()
它的回归:
捕获:java.io.IOException:无法运行程序“|”:错误=20,不是目录 java.io.IOException:无法运行程序“|”:错误=20,不是目录 在 hudson8814765985646265134.run(hudson8814765985646265134.groovy:27) 引起:java.io.IOException: error=20, Not a directory ... 1 更多
我假设命令不理解“|”命令的一部分,有什么建议可以修复此脚本以运行预期的 bash?我认为可以在工作区中创建一个 .sh 文件,但不确定如何。
Pastebin 适合想要查看完整脚本的用户:https://pastebin.com/izaXVucF
干杯:)
【问题讨论】:
-
管道
|是shell (bash) 的一个特性。所以如果你想用你想要的命令和管道启动 shell... -
我的印象是我可以通过 groovy 执行 shell 命令,使用此命令运行单独的 shell 步骤没有问题(我可能更喜欢它)但是我不知道如何将此 groovy 脚本的输出传递到该 shell 步骤。
标签: bash shell jenkins groovy graphite