我有以下脚本。打印多个bash变量
#!/bin/bash
d5=me
d6=you
d7=re
for i in {5..7}
do
echo $"d$i"
done
此打印出
D5
D6
D7
我期待打印
我
你
重新
我有以下脚本。打印多个bash变量
#!/bin/bash
d5=me
d6=you
d7=re
for i in {5..7}
do
echo $"d$i"
done
此打印出
D5
D6
D7
我期待打印
我
你
重新
您可以使用"${!varName}"
引用储值在varName
变量:
for i in {5..7}; do v="d$i"; echo "${!v}"; done
me
you
re
Check indirect variable expansion in bash
或者更简单:
for v in d{5..7}; do echo "${!v}"; done
me
you
re
您还可以使用eval
:
for i in {5..7}; do eval echo \$d$i ; done
是的,你可以使用'eval',但考虑到有一个专门的间接变量扩展机制(见anubhava的答案),为什么_would_你,因为eval的安全风险? – mklement0
你为什么不使用数组?每当你发现自己用这样的连续名字构造变量时,它可能应该是一个数组。 – Barmar