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

Shell/Bash中字符串相等检查匹配成功却返回1的问题咨询

问题根因
  1. AWS CLI 默认输出为JSON格式,你通过--query提取字符串字段时,返回结果会自带JSON格式的双引号包裹,也就是说$ri_status实际存储的是"successful"(包含前后两个双引号),而非纯文本的successful,二者自然不相等。
  2. 你在test命令中没有给变量加双引号包裹,若变量中存在空格、换行符或其他不可见字符时,Shell会先对变量做分词处理,导致test的参数结构异常,返回非0状态码。
修复步骤
  • 首先修改AWS CLI命令,增加--output text参数,强制输出纯文本,去除JSON格式自带的双引号,同时建议用$()替代反引号存储命令输出,兼容性更好:
ri_status=$(aws dms describe-connections --filter Name=replication-instance-arn,Values=$ri_arn --query=Connections[0].Status --region us-east-1 --output text)
  • 执行比较时,必须给变量加上双引号包裹,避免分词问题:
test "$ri_status" = "successful"
echo $?
  • 如果调整后仍不匹配,可以用以下命令打印变量的所有字符(包括不可见字符),排查是否有多余的换行、空格等:
# 打印变量的逐字符解析结果
echo -n "$ri_status" | od -c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:02