将两个数组变量传递到单个循环中

时间:2014-04-30 09:02:59

标签: arrays bash variables multiple-value

我在这里搜索并搜索了一个答案,我认为在bash中做一个菜鸟,不知道正确的方法,而不是搜索正确的关键字,这意味着我可以&# 39;完全克服了最后的障碍。

我正在编写一个基本的bash脚本,根据逗号分隔的数组变量的内容在一个文件中创建配置行。它适用于单个变量,但是当我尝试组合这两个数组变量时,它并不是很有效。我已经尝试在循环中循环,当我希望它与其创建的其他5行循环时,它只是一个接一个地创建行。

这两个变量具有相同的迭代次数。例如:

  • ARR1 = SITENAME1,SITENAME2,SITENAME3
  • ARR2 = 12:AC:23:BF:12:CA,22:德:A2:BF:21:AC,01:E4:32:F0:12:C4

我希望将它们一起传递到循环中:

  • SITENAME1($ y)12:ac:23:bf:12:ca($ x)
  • SITENAME2($ y)22:de:a2:bf:21:ac($ x)
  • SITENAME3($ y)与01:e4:32:f0:12:c4($ x)

以下是代码提取:

arr1=$(echo $sites | tr "," "\n")
arr2=$(echo $mastermacs | tr "," "\n")
IFS="," read -a arr1 <<< "$sites"
IFS="," read -a arr2 <<< "$mastermacs"
for y in "${!arr1[@]}"; do
#    for x in "${arr2[@]}"; do
  n=$(($n+1))
  echo "config flexconnect group ${arr1[y]} add"$'\r' >> Flex-cfg.txt
  echo "config flexconnect group ${arr1[y]} ap add ${arr2[x]} "$'\r' >> Flex-cfg.txt
  echo "config flexconnect group ${arr1[y]} predownload master ${arr1[y]}_AP01"$'\r' >> Flex-cfg.txt
  echo "config flexconnect group ${arr1[y]} predownload enable"$'\r' >> Flex-cfg.txt
  echo "config flexconnect group ${arr1[y]} predownload start primary"$'\r' >> Flex-cfg.txt
 #    done
 done

特别是这一行,我尝试使用2个值进行迭代(顺便说一下,我只使用了$y$x,I&I #39;我刚刚修补过):

echo "config flexconnect group ${arr1[y]} ap add ${arr2[x]} "$'\r' >> Flex-cfg.txt

但就目前而言,它每次只放第一个。值Y是名称,值X是MAC地址。

我要么非常接近,要么完全错误。所以可以提供一些帮助!

1 个答案:

答案 0 :(得分:0)

IFS=, read -a sz <<< "$sites"
IFS=, read -a mz <<< "$mastermacs"
fx='config flexconnect group'
for x in ${!sz[*]}
do
  echo "$fx ${sz[x]} add"
  echo "$fx ${sz[x]} ap add ${mz[x]}"
  echo "$fx ${sz[x]} predownload master ${sz[x]}_AP01"
  echo "$fx ${sz[x]} predownload enable"
  echo "$fx ${sz[x]} predownload start primary"
  echo
done
  • 请勿使用arr1。如果您的变量很快就会迷失在代码中 名字没有意义

  • 我添加了额外的空echo,以提高输出的可读性