Arrays 如何在shell脚本for循环中使用两个数组?

Arrays 如何在shell脚本for循环中使用两个数组?,arrays,linux,bash,shell,Arrays,Linux,Bash,Shell,我在bash脚本中有两个数组,每个数组都有相同数量的元素,我需要为for循环中第一个数组中的每个元素编写第二个数组的每个元素 第一个数组名:ARR\u MPOINT 第二个数组名:ARR_LVNAME 剧本的一部分: ARR_MPOINT=(/tmp /var /log); ARR_LVNAME=(lv_tmp lv_var lv_log) for MPOINT in "${ARR_MPOINT[@]}" do echo "/dev/mapper/VolGroup01-

我在bash脚本中有两个数组,每个数组都有相同数量的元素,我需要为for循环中第一个数组中的每个元素编写第二个数组的每个元素

第一个数组名:ARR\u MPOINT

第二个数组名:ARR_LVNAME

剧本的一部分:

ARR_MPOINT=(/tmp /var /log);
ARR_LVNAME=(lv_tmp lv_var lv_log)

for MPOINT in "${ARR_MPOINT[@]}"
    do
        echo "/dev/mapper/VolGroup01-${ARR_LVNAME[@]}     $MPOINT         xfs      defaults        1 2" 
    done

I need to print below output

/dev/mapper/VolGroup01-lv_tmp      /tmp        xfs      defaults        1 2
/dev/mapper/VolGroup01-lv_var      /var        xfs      defaults        1 2
/dev/mapper/VolGroup01-lv_log      /log        xfs      defaults        1 2

您可以将
/
替换为
lv\uu
,并仅使用第一个数组获取输出:

for MPOINT in "${ARR_MPOINT[@]}"; do
    echo "/dev/mapper/VolGroup01-${MPOINT//\//lv_} $MPOINT xfs defaults 1 2" 
done

如果数组长度相同,则可以通过索引访问元素:

for ((i=0; i<${#ARR_MPOINT[@]}; i++)); do
    echo "/dev/mapper/VolGroup01-${ARR_LVNAME[i]}     ${ARR_MPOINT[i]}         xfs      defaults        1 2" 
done

for((i=0;iA嵌套for循环,在
ARR\u LVNAME
上迭代)应该可以做到这一点。刚刚意识到你想要3次迭代而不是9次,但是在同一个索引中访问两个数组。使用类似于
的for循环,如{0..$ARRAY\u SIZE}
。然后类似于
echo”/dev/mapper/VolGroup01-${ARR\u LVNAME[i]}${ARR\u MPOINT[i]}
我如何编辑${ARR_LVNAME[@]}?请看下面的答案:谢谢,这样行。我会试试这个。