Bash二维关联数组赋值失效问题求助
解决Bash二维关联数组修改失效问题
你的问题出在数组索引的引号使用错误上,多余的嵌套双引号导致实际生成的键和你预期的格式不匹配,所以赋值操作根本没有作用到目标位置。
错误原因分析
你写的代码里,索引部分""$number4", "$number3""会生成包含额外双引号的键(比如假设number4=1、number3=2,实际键会是"1", "2"),而你读取原位置用的是"$number2, $number1"(生成的键是x, y这种不带引号的格式),两者完全不匹配,自然无法完成值的迁移,也没法清空原位置的值。
修正后的代码
把索引里多余的双引号去掉,直接用变量拼接成统一格式的键字符串即可:
# 迁移值到目标位置 chessboard["$number4, $number3"]="${chessboard["$number2, $number1"]}" # 清空原位置的值 chessboard["$number2, $number1"]="."
验证方法
如果不确定键的格式是否正确,可以用下面的命令打印数组所有键,确认和你预期的一致:
echo "${!chessboard[@]}"
内容的提问来源于stack exchange,提问作者TBY
相关产品推荐
相关产品推荐

