Arrays 如何在shell脚本for循环中使用两个数组?
我在bash脚本中有两个数组,每个数组都有相同数量的元素,我需要为for循环中第一个数组中的每个元素编写第二个数组的每个元素 第一个数组名:ARR\u MPOINT 第二个数组名:ARR_LVNAME 剧本的一部分: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-
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[@]}?请看下面的答案:谢谢,这样行。我会试试这个。