2016-06-02 3 views
0

Я ищу для автоматизации dns-add путем создания двух переменных цикла for. Я не знаю, как это возможно. Я знаю, что мой код ниже неправильный. У меня возникают трудности с пониманием того, как создавать две переменные в однострочном пространстве.Для цикла с несколькими переменными (операторы)

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 
+1

Взгляните на это. Это не общий ответ на ваш вопрос, но может поместиться в ваш случай использования: http://stackoverflow.com/questions/16394176/how-to-merge-two-files-consistently-line-by-line –

ответ

7

for петля неправильная конструкция для итерации любого файла (см Bash FAQ 001), не говоря уже о двух файлов. Вместо этого используйте цикл while с командой read.

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 
+0

спасибо за быстрый Ответ я действительно ценю! –

0

Я думаю, что вам не хватает 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 
Смежные вопросы