【发布时间】:2014-04-19 01:32:56
【问题描述】:
在我在下面发布的代码之外,我定义了一个数组 fanrp0[1] 和 fanrp0[2] 我对风扇 0 到 3 做了同样的事情。我正在尝试改变 fstat 并在两个数组中回显每个风扇.
for (( f=1; f<=2; f++ ))
do
for (( f2=0; f2<=3; f2++ ))
do
fstat="${(fanrp$f2)[$f]}"
echo $fstat
done
done
【问题讨论】:
-
问题出在哪里?
-
看起来你正在尝试做 bash 所指的间接引用,这对于数组变量来说显然相当困难和繁琐,从 this Bash FAQ page 判断,我在 @ 上找到的987654322@。您可以使用
eval有点 更轻松地完成您需要的事情,就像在eval "fstat=\${fanrp$f2[$f]}"中一样,但请记住,使用eval存在一些安全问题。我会先阅读我链接到的那个 Bash FAQ 页面。 -
一旦你开始考虑
[...]不是索引语法,而是作为变量名称的一部分,间接数组引用会更容易。如果您有一个数组foo,那么foo[0]、foo[1]等只是奇怪命名的变量,每个都有自己的值。然后x=foo[0]自然导致${!x}等价于${foo[0]}。
标签: arrays bash variables concatenation