LINUX.ORG.RU

Помогите разобраться с циклом

 


0

2

Есть два списка: а - там построчно написаны имена для будущих файлов d - там построчно написаны ссылки на закачку пример: ftp://ftp.abc/cs/123.abc ftp://ftp.abc/aa/123.abc (все файлы лежат в разных каталогах, но с одинаковыми именем 123) Задача: берём первую строчку по списку из d, качаем, и переименовываем как первая строчка из a. Повторить до тех пор пока всё не будет выкачено и переименовано.

Набросал... http://pastebin.com/DHqL3rqu

#!/bin/bash
while read dline; do
wget $dline
        while read line; do
        echo "Строка : $line"
        mv 123.abc $line.abc;
        done < a
done < d

В итоге выкачивает все файлы, переименовывает только первый файл, а потом выдаёт ошибку mv: не удалось выполнить stat для «123.abc»: Нет такого файла или каталога

Вот как это сделать правильно?..

paste a b | while read link name
do
  echo "wget -O \"$name\" \"$link\""
done
ziemin ★★ ()
Последнее исправление: ziemin (всего исправлений: 2)
Ответ на: правильно так от mix_mix

о_О

Спасибо огромное! Получилось :-)

Блин... всё делается одной строкой и так просто...

malody ()
i=0;
while read dline
do
  i=$i+1;
  aline=`sed -n ${i},${i}p a`;
  wget "$dline" -O "$aline";
done < d
kostik87 ★★★★★ ()

1) «a», случаем, не воспринимается как.. команда. 2) может d_a, или как вариант последовательность изменить?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.