简体   繁体   English

从bash中的连接变量定义数组

[英]Defining an array from concatenated variables in bash

Outside of the code I posted below I defined an array fanrp0[1] and fanrp0[2] I did the same for fans 0 through 3. I'm trying to make fstat change and echo each of the fans in two arrays. 在下面发布的代码之外,我定义了一个数组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

If fanrp0 , fanrp1 , fanrp2 , and fanrp3 are all arrays, you can write your loops as 如果fanrp0fanrp1fanrp2fanrp3都是数组,则可以将循环编写为

for (( f=1; f<=2; f++ ))
do
  for (( f2=0; f2<=3; f2++ ))
  do
    x="fanrp$f2[$f]"
    fstat="${!x}"
    echo $fstat
  done
done

Since f2 is used only to generate the array names, a slightly cleaner syntax would be 由于f2仅用于生成数组名称,因此语法会稍微简洁一些

for f in {1..2}; do
  for arr in fanrp{0..3}; do
    x="$arr[$f]"
    fstat=${!x}
    echo $fstat
  done
done

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM