我想使用一个变量作为索引值来引用传递给脚本的位置变量,例如:
x=101
y=201
z=301
foo(){
i=0;
(( i+=1 )); # i=1
echo "${$i}"; # parameter 1
(( i+=1 )); # i=2
echo "${$i}"; # parameter 2
(( i+=1 )); # i=3
echo "${$i}"; # parameter 3
}
foo x y z
输出:
101
201
301
数组和循环在这种情况下无济于事,我需要一个简单的方法来递增一个 int 变量并使用这个值作为索引来检索传递的方法参数。
建议?
最佳答案
我相信你需要在这里进行间接变量扩展:
x=101
y=201
z=301
foo() {
local i
local v
for ((i=1; i<=3; i++ )); do
v="${!i}" # will get x, y, z
echo "${!v}" # will get values of $x, $y, $z
done
}
然后称它为:
foo x y z
101
201
301
关于linux - bash - 使用 int 变量作为引用传递给函数的位置参数的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709133/