Chieftec
@Chieftec
Родился и вырос

Не работает вложенный цикл на bash. Почему?

Добрый день!

Почти впервые работаю с bash, потребовалось пройтись парсером по целому списку ссылок, в каждой ссылке есть постраничная навигация. Есть php скрипт, который парсит все это, а запускается все из bash, который устроен так:

#!/bin/bash

# Создаем массив с ссылками для парсинга, после разделителя - кол-во страниц для парсинга по ссылке
declare -A site
site[0]="https://site.ru/;50"
site[1]="https://site.ru/;10"
site[2]="https://site.ru/;100"

# Обходим массив ссылок
for key in "${!site[@]}"; do
    echo "Key:   ${key}"
    echo "Value: ${site[$key]} \n\r"
    echo "=============================================="
    set -f; IFS=";"; arr=${site[$key]}

    # Вот тут далее не работает. Проблема с cnt, если вместо нее вставить цифру (например 50) то цикл работает
    lnk=${arr[0]}
    cnt=${arr[1]}
    for (( i=1; i <= $cnt; i++ ))
    do
        echo -e "Page number is " $i " in cat " $lnk "\n\r"
        /usr/local/lsws/lsphp73/bin/php -f parser.php $lnk $i
    done

done


Вложенный цикл не работает. Проблема с counter, если вместо нее вставить цифру (например 50) то цикл работает.
Перебрал все возможные варианты, но так и не заработало.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Потому что в $arr не массив, а в $cnt в свою очередь пустая строка
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
set -f; IFS=";"; arr=${site[$key]}

Ну так вот тут уже не работает. Зачем так делать, почему было бы не завести с самого начала два отдельных массива -- для адресов и для cnt?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы