在Azure管道中Bash脚本中的条件不起作用

3
我有一个简单的bash脚本,它从命令中获取一个值,将其存储在变量中,并使用if条件中断构建。这适用于任何bash终端。请参见下面的代码。
#!/bin/bash
jq --version
PRkey=$(curl -u TOKEN:   'https://xx.yyy.zzz/abc/abc' | jq '.pullRequests | sort_by(.key)[0].status.qualityGateStatus')
echo $PRkey
if [[ "$PRkey" = "OK" ]]
then
  echo "Quality gate passed"
else
  echo "Quality gate failed"
  exit 1
fi

在任何 bash 终端中,根据 if 条件语句中给定的字符串 "OK" 或 "ERROR" ,我都可以得到正确的输出。但是在 Azure 流水线的 bash 任务中,当我将其用作内联脚本时,它总是以 "Quality gate failed" 的输出退出。请问有人能帮忙吗?

在 Azure 管道中运行时,收到了什么值作为 PRkeyecho 显示了什么? - Inian
这是输出结果 jq-1.5-1-a5b5cbe % 总体 % 接收 % 传输 平均速度 时间 时间 时间 当前 下载 上传 总计 花费 剩余 速度 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3445 100 3445 0 0 10278 0 --:--:-- --:--:-- --:--:-- 10252 "OK" 质量门限未通过 - AK123
不,那是curl的输出,但echo PRkey仅输出“OK”,因为我使用了jq仅提取该值以保存在变量中。 - AK123
2
你得到了 OK 还是 "OK"?你的 if 语句看起来是寻找没有引号的 OK - Walter A
@WalterA 我得到了带引号的回复 "OK"。我应该如何修改它来寻找引号? - AK123
1
只需将它们包含在模式中进行比较,并根据您的喜好编写测试,如[[ $PRkey == '"OK"' ]][[ $PRkey == \"OK\" ]] - user1934428
1个回答

4
你的if语句寻找没有引号的OK。 请按照@user1934428的建议修改你的代码,并在$PRkey周围加上引号。
if [[ "$PRkey" == '"OK"' ]] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接