【问题标题】:For loop with multiple varibles(statements)具有多个变量(语句)的循环
【发布时间】:2016-10-02 16:58:49
【问题描述】:

我希望通过创建两个 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

【问题讨论】:

标签: linux bash shell for-loop


【解决方案1】:

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

【讨论】:

  • 感谢您的快速回复,我真的很感激!
【解决方案2】:

我想你错过了一个do

for i in `cat list.csv`; **do** 
  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

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2011-06-19
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多