Bash关联数组键值匹配失败:为何无法获取对应图标值?
问题分析与解决
问题根源
curl获取的%x格式结果大概率带有隐藏的换行/回车字符——虽然终端输出看起来和数组键完全一致,但实际变量里的字符串包含不可见字符,导致关联数组索引匹配失败,最终返回空值。
修复方案
对curl的返回结果做空白字符清理,去掉所有换行、回车和多余空格:
方法1(使用tr工具)
修改脚本中conditionplain的赋值行:
conditionplain=$(curl -s "wttr.in/$location?format=%x" | tr -d '\r\n')
方法2(纯Bash参数扩展,无需额外工具)
conditionplain=$(curl -s "wttr.in/$location?format=%x") # 移除变量中的制表符、回车、换行 conditionplain=${conditionplain//[$'\t\r\n']/}
验证方式
可以先打印变量的原始字节内容,确认是否存在隐藏字符:
echo "$conditionplain" | od -c
如果输出里出现\r或\n,就坐实了是隐藏字符导致的索引匹配问题。
内容的提问来源于stack exchange,提问作者stank mcgank
相关产品推荐
相关产品推荐

