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

时间:2017-06-29 05:28:44

标签: arrays linux bash shell

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

第一个数组名称:ARR_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

2 个答案:

答案 0 :(得分:1)

如果数组具有相同的长度,则可以按索引访问元素:

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

答案 1 :(得分:0)

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

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