1

我在这里搜索并搜索了答案,我认为作为 bash 的菜鸟,不知道正确的方法,以及不搜索正确的关键字的组合意味着我无法完全克服最后的障碍。

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

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

  • arr1=站点名称 1,站点名称 2,站点名称 3
  • arr2=12:ac:23:bf:12:ca,22:de: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我一直在修补):

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

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

我要么非常接近,要么完全完全错误。所以可以做一些善意的帮助!

4

1 回答 1

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,以帮助输出的可读性

于 2014-04-30T09:42:27.380 回答