我有一个输出字符串,我想对其运行“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/