for for loop with multiple varibles(statements)

时间:2016-06-02 19:32:58

标签: linux bash shell for-loop

我希望通过创建两个for循环变量来自动化dns-add。我不确定这是怎么回事。我知道下面的代码是错误的。我很难理解如何在单行中创建两个变量。

for i in `cat list.csv`;
  for g in `cat list2.csv`; do
    echo $i;
    echo $g;
    dns-add-record --zone=impl.wd2.wd --record=$i --type=CNAME --record-value=$g
  done;
done

我认为唯一可行的就是这个,但我怀疑它会起作用。有人有任何提示吗?

for i in `cat list.csv` && \
  for g in `cat list2.csv ; do
    echo $i && $g;
    dns-add-record --zone=impl.wd2.wd --record=$i --type=CNAME --record-value=$g
  done;
done

2 个答案:

答案 0 :(得分:7)

for循环是错误的构造,用于迭代任何文件(请参阅Bash FAQ 001),更不用说两个文件了。改为使用带有read命令的while循环。

while read -u 3 i; read -u 4 g; do
    echo "$i"
    echo "$g"
    dns-add-record --zone=impl.wd2.wd --record="$i" --type=CNAME --record-value="$g"
done 3< list.csv 4< list2.csv

答案 1 :(得分:0)

我认为你遗失了一个refs/heads/foo/bar

do