我有以下腳本。打印多個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