Jenking 添加了一个“+”符号作为我要执行的命令的一部分,但失败了

问题描述 投票:0回答:1

我的詹金斯工作似乎因一个非常奇怪的原因而失败。当我看到控制台输出时,我可以看到以下内容:

+ cat + jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' 
+ tee change.json 

然后我再次运行该作业,它执行得非常好:

+ cat change.json
+ cat + jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' 
+ tee change.json 

我真的不确定为什么在

cat
命令之后添加“+”。这是我以前在詹金斯中从未见过的奇怪行为。这有什么原因吗?

以下是作为我的詹金斯工作的一部分运行的命令:

sh """ cat change.json | jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' | tee change.json """

我尝试查看 bash 参考手册,但找不到对我所看到的这个问题的太多解释:https://www.gnu.org/software/bash/manual/bash.html#index-PS1

bash shell jenkins jenkins-pipeline jenkins-groovy
1个回答
0
投票

Jenkins 控制台输出中的“+”符号是 Jenkins 显示命令已执行的方式的一部分。特别是当

set -x
启用时。

您的命令的问题可能是由于使用

tee
写入您正在使用 cat 读取的同一文件。这可能会导致问题,因为文件是同时读取和写入的。

也许如果将内容存储在临时文件中会更好,如下所示:

jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value":"${dc1ip}"}]' change.json > temp.json && mv temp.json change.json
© www.soinside.com 2019 - 2024. All rights reserved.