Bash中利用关联数组值访问另一关联数组的语法问题求助
问题分析与修正方案
1. 关联数组声明的语法错误
你写的declare A- accocArray1=...是错误的,bash中声明关联数组的正确语法是declare -A(短横线在参数A之前),这是第一个必须修正的点。
2. echo语句的嵌套引号问题
原echo语句里的嵌套双引号没有转义,比如${accocArray2["${accocArray1["a01"]}"]},内层的双引号和外层双引号语法冲突——虽然bash在某些场景下可能勉强解析并输出结果,但这属于不规范写法,存在潜在问题。
修正后的完整代码
# 正确声明关联数组 declare -A accocArray1=([a01]=1 [a02]=2 [a03]=3) declare -A accocArray2=([b01]=1 [b02]=2 [b03]=3) # 写法1:转义内层双引号,规范嵌套 echo ${accocArray2["${accocArray1[\"a01\"]}"]} ${accocArray2["${accocArray1[\"a02\"]}"]} ${accocArray2["${accocArray1[\"a03\"]}"]} # 写法2:去掉不必要的引号(键为简单字符串时可省略引号),更简洁 echo ${accocArray2[${accocArray1[a01]}]} ${accocArray2[${accocArray1[a02]}]} ${accocArray2[${accocArray1[a03]}]} # 写法3:改用单引号包裹内层键名,避免引号冲突 echo ${accocArray2["${accocArray1['a01']}"]} ${accocArray2["${accocArray1['a02']}"]} ${accocArray2["${accocArray1['a03']}"]}
以上三种写法都能正确输出1 2 3,且语法完全符合bash规范。
内容的提问来源于stack exchange,提问作者haus45
相关产品推荐
相关产品推荐

