bash - Jenkins 管道、bash 和管道

标签 bash jenkins jenkins-pipeline

我有一个输出字符串,我想对其运行“tr”和“jq”命令。管道很有意义,IP= sh(script: "echo $spawnServer | jq .[0] | tr -d '\"'", returnStdout: true) 不幸的是,jenkins 管道讨厌管道,所以我得到的是

+ tr -d '"'
+ jq '.[0]'
+ echo '[' 172.31.79.253, 'i-0d65b431f18a385d0]'
parse error: Invalid numeric literal at line 1, column 16

任何提示都会很棒!到目前为止我唯一发现的是有人使用 eval,但这对我不起作用。任何提示都会很棒!

最佳答案

您可以使用 def,而不是纠结于引号和转义符,如:

def command = $/"echo ${spawnServer} | jq .[0] | tr -d '\"'"/$

res = sh(returnStdout: true, script: command).trim()
sh("echo ${res}")

关于bash - Jenkins 管道、bash 和管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47193645/

相关文章:

jenkins - 我何时以及为什么应该在 Jenkinsfiles catch block 中抛出错误? (脚本化管道)

bash - 智能手机上的镜像bash外壳用于Rails调试

linux - 在 shell 脚本中执行 cp -u 时遇到问题

jenkins - 使用 groovy init 创建 Jenkins WorkflowMultibranchProject 作业

git - 在 Docker 中的 Jenkins 构建脚本中调用 Git

jenkins - 如何抑制jenkins管道控制台输出中的源脚本行回显?

jenkins - 关闭 Allure 报告的存档

bash - 在文本文件中添加引号

linux - 将命令粘贴到不同的行号文件

Jenkins蓝海环境变量