间接展开 returns 变量名而不是值
Indirect expansion returns variable name instead of value
我正在尝试使用间接扩展设置一些变量。根据我读过的文档,设置应该很简单:
var1=qa
qa_num=12345
varname="${var1}_ci"
echo ${!varname}
我应该得到“12345”。相反,输出是 "varname"。如果我删除感叹号,我会得到 "qa_ci",而不是“12345”
这应该是一个相对简单的解决方案,所以我不确定我遗漏了什么,如果有的话。
您的代码定义了 qa_num
,但 varname
赋值引用了 qa_ci
。结果,您的 echo
扩展了不存在的 qa_ci
,给出了空结果。更改 varname
分配修复了我系统上的问题。
示例:foo.sh
:
#!/bin/bash
var1=qa
qa_num=12345
varname="${var1}_num" # <=== not _ci
echo "${!varname}" # I also added "" here as a general good practice
输出:
$ bash foo.sh
12345
我正在尝试使用间接扩展设置一些变量。根据我读过的文档,设置应该很简单:
var1=qa
qa_num=12345
varname="${var1}_ci"
echo ${!varname}
我应该得到“12345”。相反,输出是 "varname"。如果我删除感叹号,我会得到 "qa_ci",而不是“12345”
这应该是一个相对简单的解决方案,所以我不确定我遗漏了什么,如果有的话。
您的代码定义了 qa_num
,但 varname
赋值引用了 qa_ci
。结果,您的 echo
扩展了不存在的 qa_ci
,给出了空结果。更改 varname
分配修复了我系统上的问题。
示例:foo.sh
:
#!/bin/bash
var1=qa
qa_num=12345
varname="${var1}_num" # <=== not _ci
echo "${!varname}" # I also added "" here as a general good practice
输出:
$ bash foo.sh
12345