Bash中如何通过b_${a}形式调用b_name变量的内容?
Bash嵌套变量展开的解决办法
Bash不支持直接的嵌套变量展开,所以echo ${b_${a}}这种写法会报错,下面给你几种可行的解决方式:
使用eval读取变量
借助eval先完成内层变量的展开,再处理外层变量的引用:eval echo \${b_${a}}或者用引号包裹,效果一致:
eval "echo \${b_${a}}"这里的反斜杠是为了让
${a}先被展开成name,eval再解析${b_name}获取值。使用间接引用特性
先构造出目标变量的完整名称,再用Bash的间接引用语法${!var}来读取:target_var="b_${a}" echo ${!target_var}这种写法比eval更直观,也更安全。
使用命名引用(Bash 4.3+)
如果你的Bash版本在4.3及以上,推荐用declare -n创建命名引用,这是最简洁安全的方式:# 创建变量时也可以用这种方式替代eval declare -n ref="b_${a}" ref=1 # 读取变量 echo ${ref}命名引用会让
ref成为b_name的别名,操作ref就等同于操作b_name。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

