我正在尝试使用间接扩展设置一些变量。根据我阅读的文档,设置应该很简单:
var1=qa
qa_num=12345
varname="${var1}_ci"
echo ${!varname}
我应该得到“ 12345”。而是,输出为“ varname”。如果删除了感叹号,我将以“ qa_ci”而不是“ 12345”结束
这应该是一个相对简单的解决方案,所以我不确定是否缺少了什么。
答案 0 :(得分:1)
您的代码定义了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