Задать вопрос
yarkov
@yarkov
Помог ответ? Отметь решением.

Как запустить wget с данными из двух массивов?

Есть файл ./result/ok.txt
1321231321321321321
4564654654564654654
4654654654654654564

Есть файл ./result/urls.txt
http://url.ru/some?v=86ff8d97yguifidgijdhfkjghdflkgjdf
http://url.ru/some?v=879874g65df4g65d4gf65d4f65g4
http://url.ru/some?v=d89f7g98df7g987fd98g7d98f7gfd

Ссылки ведут на картинки. Надо скачать их так:
wget -O ./img/1321231321321321321.jpg http://url.ru/some?v=86ff8d97yguifidgijdhfkjghdflkgjdf
wget -O ./img/4564654654564654654.jpg http://url.ru/some?v=879874g65df4g65d4gf65d4f65g4
wget -O ./img/4654654654654654564.jpg http://url.ru/some?v=d89f7g98df7g987fd98g7d98f7gfd

Вот что я накалякал:
#!/bin/bash

declare -a NAMES
declare -a URLS

# Считываем файлы в массивы
NAMES=`cat ./result/ok.txt`
URLS=`cat ./result/urls.txt`

# Определяем длину массивов
LEN_NAMES=${#NAMES[@]}
LEN_URLS=${#URLS[@]}

# Папка для сохранения
IMG_FOLDER="img"
[ -d ${IMG_FOLDER} ] || mkdir -p ${IMG_FOLDER}

n=1
echo ${NAMES[$n]}
echo ${URLS[$n]}
#wget -b -O "./imgs/"$NAMES[$n]".jpg" $URLS[$n]

#for n in $LEN_NAMES
#do
    #echo -n $fname
    #wget -b -O "./imgs/"${NAMES[$n]}".jpg" ${URLS[$n]}
#done

Но не выводится в консоль вообще ничего (((
  • Вопрос задан
  • 274 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя Сергей К ответам на вопрос (3)
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Вроде как cat считал весь файл в 0 элемент массива, а не построчно.
построчно можно сделать так:
# Считываем файлы в массивы
NAMES=()
while read -r LINE; do
  NAMES+=("$LINE")
done < 'ok.txt'

URLS=()
while read -r LINE; do
  URLS+=("$LINE")
done < 'urls.txt'
Ответ написан
Комментировать