You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash/Shell脚本中null值检测的if判断逻辑不生效问题排查

问题根因
  • [[ -z $oauth_token ]]的作用是判断变量是否为长度为0的空字符串,而你当前场景下oauth_token变量存储的是字面量字符串null,长度为4,自然不会触发该判断条件。
  • 从日志输出可以看到除了你主动打印的oauth token is: null外,额外输出了两行null,说明你的jq匹配逻辑命中了多条符合name == "$1"的oauth客户端条目,部分条目不存在对应的oauth token id,导致jq返回了多行null字符串,变量实际存储的是换行分隔的多段null内容,更不符合空字符串的判定条件。
修复方案
  1. 调整jq逻辑,确保匹配唯一,同时将返回的null转为真正的空字符串:在jq表达式末尾添加// empty,当匹配结果为null时直接输出空值,示例修改后jq部分如下:
jq -r ".data[] | select(.attributes.name == \"$1\") | .relationships.\"oauth-tokens\".data[0].id // empty"

如果确认应该只有一个匹配结果,可在select后加first取第一个匹配项避免多行输出:

jq -r ".data[] | select(.attributes.name == \"$1\") | first | .relationships.\"oauth-tokens\".data[0].id // empty"
  1. 调整判断条件,同时覆盖空值和字面量null的场景:
if [[ -z $oauth_token || $oauth_token == "null" ]]; then
    warn "Connection to VSC was not successful as oauth_token is null."
    exit 0
fi

内容的提问来源于stack exchange,提问作者WorkoutBuddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:09