Bash 5.2.2创建关联数组报错,咨询解决方案及版本选择
问题解决:Bash关联数组报错与输出异常
核心原因
你遇到的declare: -A: invalid option错误,根本原因不是Bash版本(你用的5.2.2完全支持关联数组),而是脚本被POSIX标准的sh执行了——sh不支持declare -A这种关联数组语法,导致关联数组被当作普通字符串/数组处理,进而出现后续的输出异常。
解决方案
1. 修正脚本的Shebang行
确保脚本第一行是:
#!/bin/bash
而非#!/bin/sh,这样系统会用Bash而非POSIX sh来执行脚本。
2. 正确执行脚本
如果手动运行脚本,不要用:
sh ./runBin.sh
改用:
bash ./runBin.sh
或者给脚本添加执行权限后直接运行:
chmod +x ./runBin.sh ./runBin.sh
3. 验证关联数组功能
修正后,你的原代码就能正常工作,补充正确的遍历方式:
declare -A pvals_d pvals_d["gt"]=1.6975e-05 pvals_d+=(["zelda"]=7.14e-05 ["hb"]=8.52e-05) # 测试单个取值 echo ${pvals_d["gt"]} # 输出 1.6975e-05 # 遍历所有键值对(注意用${!数组名[@]}获取键) for key in "${!pvals_d[@]}"; do echo "$key: ${pvals_d[$key]}" done
结论
完全不需要安装Bash4,你当前的Bash5.2.2版本完全支持关联数组,只需确保脚本用Bash执行即可。
内容的提问来源于stack exchange,提问作者Jillian Ness
相关产品推荐
相关产品推荐

