#!/bin/bash
list="one two three"
one=1
two=2
three=3
for k in $list
do
echo $k
done
对于上面的代码,输出是:
一个
2个
3
但我一直认为应该输出:
1
2
3
这令人困惑。怎么理解这个?
答案 0 :(得分:2)
扩展$k
只是将变量的名称作为字符串。如果需要变量的值,则必须使用参数扩展语法${!k}
。记录在案here。
#!/bin/bash
list="one two three"
one=1
two=2
three=3
for k in $list
do
echo "${!k}"
done
1
2
3