Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Цикл while повторить n-раз  (Прочитано 3551 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Цикл while повторить n-раз
« : 02 Марта 2011, 18:48:35 »
<?php
#!/bin/bash
#RULEEND=0
#while [ RULEEND -lt 50 ]
do
read LINE
site
=http://site/
dir="/home/trek/AAA/site_login/"
#$LINE=index1.html
wget -/home/trek/AAA/site_login$site$LINE
#RULEEND=`expr $RULEEND + 1`
echo "wget  $site$LINE";
sleep 1;
rm /home/trek/AAA/site_login/$LINE;
echo 
"wget $site$LINE";
echo 
"LINK has been removed!<br>";
sleep 2;
done < /home/trek/AAA/site_login/site_login.tmp
?>



Задача: чтоб скрипт выполнил цикл скачиваний сайтов, которые вписаны построчно в файле site_login.tmp. Но цикл должен повториться нужное количество раз... как задать то количество? Я пробовал с тем что закоментировано , но это надо указывать в самом скрипте ссылку и то одну... А мне надо чтоб один цикл скачивал все ссылки указанные в файле.

Оффлайн yorik1984

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 1592
  • Кто не хочет, ищет причины
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #1 : 02 Марта 2011, 18:59:01 »
я конечно в этом языке не разбираюсь, но нужно просто поставить условие выполнения цыкла до тех пор пока не будет конец файла
на паскале это так while not eof(site_login.tmp) do
   begin
   {тело цикла}
   end;

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #2 : 03 Марта 2011, 08:56:34 »
Если я не путаю, в wget есть опция количества скачиваемых вложений.
PS. Кроме while существует for.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #3 : 03 Марта 2011, 11:15:59 »
Если я не путаю, в wget есть опция количества скачиваемых вложений.
PS. Кроме while существует for.

Ну моя задача - повторить заданное количество раз цикл (поочередного скачивания ссылок , указанных в файле), а не в цикле скачать каждую ссылку н-ное количество раз.

Оффлайн rey_And

  • Любитель
  • *
  • Сообщений: 70
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #4 : 03 Марта 2011, 11:31:29 »
Мне казалось, что циклы для того и придуманы, чтобы их несколько раз повторять. Поэтому даже не совсем понятно, в чем ваша проблема.

Особенно for удобен для этого. for ( $i=0; $i<=3; $i++) {
    ...
}

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #5 : 03 Марта 2011, 11:33:56 »
Мне казалось, что циклы для того и придуманы, чтобы их несколько раз повторять. Поэтому даже не совсем понятно, в чем ваша проблема.

Особенно for удобен для этого. for ( $i=0; $i<=3; $i++) {
    ...
}
Вы просто не так поняли....
У меня выполняется цикл : взял строку из файла... скачал ее, потом вявзл вторую строку - скачал.. и так все строки. Вот мой цикл. И его надо повторить в добавок еще н-раз.
А за наставление спасибо.

Пользователь решил продолжить мысль 03 Марта 2011, 11:37:32:
Вот только не могу понять как связать это все в кучу...
« Последнее редактирование: 03 Марта 2011, 11:37:32 от TrEK »

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #6 : 03 Марта 2011, 11:44:44 »
а цикл в цикле не прокатит?
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #7 : 03 Марта 2011, 11:45:31 »
а цикл в цикле не прокатит?
Думаю что прокатит. Главное чтоб вышло то, что задумал.

Пользователь решил продолжить мысль 03 Марта 2011, 12:12:09:
#!/bin/bash
while
read LINE
do
site=http://site.com/
dir="/home/trek/AAA/site_login/"
wget -P /home/trek/AAA/site_login/ $site$LINE
echo "wget  $site$LINE";
rm /home/trek/AAA/site_login/$LINE;
echo "wget $site$LINE";
echo "$site$LINE has been removed!<br>";
done < /home/trek/AAA/site_login/site_login.tmp

Вот собственно сам цикл.. скрипт скачивает поочередно каждую строчку из файла. И после скачивания последней строи, - завершает свою работу.

Пользователь решил продолжить мысль 03 Марта 2011, 12:25:11:

Подскажите как его засунуть в

for ( $i=0; $i<=3; $i++) {
    ...
}
« Последнее редактирование: 03 Марта 2011, 12:25:11 от TrEK »

Оффлайн yorik1984

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 1592
  • Кто не хочет, ищет причины
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #8 : 03 Марта 2011, 12:50:00 »
Еще раз повторюсь. надо проверять файл на конец и все! В скриптах цикл while не умеет разве проверять конец файла?

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #9 : 03 Марта 2011, 12:50:35 »
а цикл в цикле не прокатит?


Пробовал химичить, но ничего не вышло... цикл выполняется один раз... скачивая все строки их файла.. и останавливается :

#!/bin/bash
RULEEND=0
while [ $RULEEND -lt 26 ]
read LINE
do
site=http://site.com/
dir="/home/trek/AAA/site_login/"
wget -P /home/trek/AAA/site_login/ $site$LINE
RULEEND=`expr $RULEEND + 1`
echo "wget  $site$LINE";
#rm /home/trek/AAA/site_login/$LINE;
echo "wget $site$LINE";
echo "LINK $site$LINE has been removed!";
sleep 1
done < /home/trek/AAA/site_login/site_login.tmp

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #10 : 03 Марта 2011, 12:59:45 »
Поставьте в начале кода определение количества строк в файле и вставьте счетчик в цикл.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #11 : 03 Марта 2011, 13:27:23 »
Поставьте в начале кода определение количества строк в файле и вставьте счетчик в цикл.
Дело в том, что количество строк не стабильное число, то есть строки каждый раз могут добавляться.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #12 : 03 Марта 2011, 13:29:03 »
Неужели их подсчитать невозможно ? ;D

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Цикл while повторить n-раз
« Ответ #13 : 03 Марта 2011, 13:43:53 »
Неужели их подсчитать невозможно ? ;D
Ну разве что инструментами шелла...

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Цикл while повторить n-раз
« Ответ #14 : 03 Марта 2011, 13:50:04 »
Ну конечно.
... | wc -l

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.