<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: как сделать чтобы цикл не останавливался</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html</link>
    <description>не так много опыта в кодинге, но попробую обьяснить.&lt;br&gt;Есть файл &quot;test&quot; куда периодически дописываются новые данные в виде блоков по 3 строки:&lt;br&gt;var1 frog32&lt;br&gt;var2 2013-01-014234&lt;br&gt;var3 &quot;url&quot;&lt;br&gt;var1 rabit1&lt;br&gt;var2 2013-01-033122&lt;br&gt;var3 &quot;url2&quot;&lt;br&gt;итд&lt;br&gt;Задача периодически читать этот файл и для новых данных создавать директорию по имени значения следующего после var2, куда записывать текстовый файл с именем после var1 и скачивать файл следующий после var3.&lt;br&gt;&lt;br&gt;Пока у меня получился следующий скрипт, однако, он создает текстовые файлы всех значений var1 из всего файла в каждой новой директории.&lt;br&gt;Как бы сделать так, чтобы второй цикл не завершал работу, а как бы приостанавливал, и когда 1й цикл опять создает новую директорию, продолжал просматривать файл с того же места?&lt;br&gt;Или мб есть другое решение чтобы в каждой директории был только 1 текстовый файл соответствующий своему блоку данных?&lt;br&gt;&lt;br&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;DIR1=/home/user/aaa&lt;br&gt;&lt;br&gt;for i in $(grep var2 $DIR1/test&amp;#124;awk &apos;&#123;print $2&#125;&apos;);&lt;br&gt; do mkdir $i;&lt;br&gt; cd $i;&lt;br&gt;   for name in $</description>

<item>
    <title>как сделать чтобы цикл не останавливался (михалыч)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#12</link>
    <pubDate>Wed, 05 Feb 2014 01:21:14 GMT</pubDate>
    <description>&amp;gt; имя пользователя уникально?&lt;br&gt;&amp;gt; ну так сразу создавать директорию &lt;br&gt;&amp;gt; mkdir &quot;$r_dir/$dir-$usr&quot;; &lt;br&gt;&amp;gt; ну и дальше по коду поправить &lt;br&gt;&lt;br&gt;sed -i &quot;.bak&quot; &apos;s&amp;#124;/$dir&amp;#124;/$dir-$usr&amp;#124;g&apos; work.pl&lt;br&gt;</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (михалыч)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#11</link>
    <pubDate>Tue, 04 Feb 2014 18:36:53 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; то все летит в папку 2013-01-014234 &lt;br&gt;&amp;gt; я думаю как бы сделать проверку для одинаковых имен и в случае &lt;br&gt;&amp;gt; если такое уже есть, то создавать такое же, но с дополнением &lt;br&gt;&amp;gt; (напр., 2013-01-014234-duble) &lt;br&gt;&amp;gt; что-то вроде: &lt;br&gt;&amp;gt;         if (-d &quot;$dir&quot;) &lt;br&gt;&amp;gt;         &#123; print &quot;dublicate&quot;; &lt;br&gt;&amp;gt;         mkdir &quot;$r_dir/$dir&quot;; &lt;br&gt;&amp;gt;         rename &quot;$r_dir/$dir&quot;,&quot;$r_dir/$dir,duble&quot;; &lt;br&gt;&amp;gt;        &#096;touch $r_dir/$dir,duble/$usr&quot;&#096;; &lt;br&gt;&lt;br&gt;имя пользователя уникально?&lt;br&gt;ну так сразу создавать директорию&lt;br&gt;mkdir &quot;$r_dir/$dir-$usr&quot;;&lt;br&gt;ну и дальше по коду поправить&lt;br&gt;</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (gorlum300)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#10</link>
    <pubDate>Tue, 04 Feb 2014 17:37:50 GMT</pubDate>
    <description>блин, спасибо большое! оно действительно работает!:)&lt;br&gt;Еще я сейчас заметил, что в случае если в дополняемом файле значение $dir для нескольких юзеров одинаковое (это таймстемп) то все складывается в одну директорию.&lt;br&gt;&lt;br&gt;те если например:&lt;br&gt;user1 2013-01-014234 http://ya.ru&lt;br&gt;user2 2013-01-014234 http://google.ru&lt;br&gt;&lt;br&gt;то все летит в папку 2013-01-014234&lt;br&gt;я думаю как бы сделать проверку для одинаковых имен и в случае если такое уже есть, то создавать такое же, но с дополнением (напр., 2013-01-014234-duble)&lt;br&gt;что-то вроде:&lt;br&gt;&lt;br&gt;        if (-d &quot;$dir&quot;)&lt;br&gt;        &#123; print &quot;dublicate&quot;;&lt;br&gt;        mkdir &quot;$r_dir/$dir&quot;;&lt;br&gt;        rename &quot;$r_dir/$dir&quot;,&quot;$r_dir/$dir,duble&quot;;&lt;br&gt;       &#096;touch $r_dir/$dir,duble/$usr&quot;&#096;;&lt;br&gt;</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (михалыч)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#9</link>
    <pubDate>Tue, 04 Feb 2014 12:41:18 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; Use of uninitialized value $usr in concatenation (.) or string at ./work2.pl line 38, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $dir in concatenation (.) or string at ./work2.pl line 40, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $out in concatenation (.) or string at ./work2.pl line 40, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $url in concatenation (.) or string at ./work2.pl line 40, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $dir in concatenation (.) or string at ./work2.pl line 41, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $out2 in concatenation (.) or string at ./work2.pl line 41, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; Use of uninitialized value $url2 in concatenation (.) or string at ./work2.pl line 41, &amp;lt;FH&amp;gt; line 3.&lt;br&gt;&amp;gt; wget: missing URL &lt;br&gt;&amp;gt; Usage: wget &#091;OPTION&#093;... &#091;URL&#093;...&lt;br&gt;&amp;gt; Просто интересно - насколько это критично?&lt;br&gt;&lt;br&gt;не критично&lt;br&gt;это в результате попытки использовать неинициализированные переменные, нужно сделать проверку на существование $dir, $out, $url&lt;br&gt;видимо попадаются строки только с юз</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (gorlum300)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#8</link>
    <pubDate>Tue, 04 Feb 2014 10:55:49 GMT</pubDate>
    <description>закачиваются файлы.&lt;br&gt;файл со списком имен и урлов формируется другим скриптом.&lt;br&gt;я его немного переделал и теперь он формирует данные в виде:&lt;br&gt;&lt;br&gt;user1 2013-01-014234 http://ya.ru http://google.com&lt;br&gt;user2 2013-01-013311 http://ya2.ru http://google2.com&lt;br&gt;&lt;br&gt;добавился еще один урл&lt;br&gt;Неуверен насколько правильно, но я добавил закачку второго урла в код, выдает ошибки но все работает:&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;&lt;br&gt;&lt;br&gt;my ($usr, $dir, $url, $url2, $out, $out2);&lt;br&gt;&lt;br&gt;&lt;br&gt;my $r_dir = &quot;~/Downloads&quot;;&lt;br&gt;&lt;br&gt;&lt;br&gt;my $file = &quot;~/Downloads/txt&quot;;&lt;br&gt;&lt;br&gt;open FH, $file or die &quot;can&apos;t open $file: $!&quot;;&lt;br&gt;&lt;br&gt;for (;;) &#123;&lt;br&gt;&lt;br&gt;    exit if (stat(FH))&#091;3&#093; == 0;&lt;br&gt;&lt;br&gt;    while (&amp;lt;FH&amp;gt;) &#123;&lt;br&gt;        chomp;&lt;br&gt;&lt;br&gt;        my &#064;str = split(&quot; &quot;, $_);&lt;br&gt;&lt;br&gt;        $usr = $str&#091;0&#093;;&lt;br&gt;        $dir = $str&#091;1&#093;;&lt;br&gt;        $url = $str&#091;2&#093;;&lt;br&gt;        $url2 = $str&#091;3&#093;;&lt;br&gt;&lt;br&gt;        $out = $url;&lt;br&gt;        $out =~ s&amp;#124;^.*/(.*)$&amp;#124;$1&amp;#124;;&lt;br&gt;        $out2 = $url2;&lt;br&gt;        $out2 =~ s&amp;#124;^.*/(.*)$&amp;#124;$1&amp;#124;;&lt;br&gt;&lt;br&gt;&lt;br&gt;        mkdir &quot;$r_dir/$dir&quot;;&lt;br&gt;&lt;br&gt;        &#096;touch &quot;$r_dir</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (михалыч)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#7</link>
    <pubDate>Tue, 04 Feb 2014 08:23:30 GMT</pubDate>
    <description>&amp;gt; Но тем не менее, расскажите, почему будет надежнее?&lt;br&gt;&lt;br&gt;А потому, что будет не просто всем сёстрам по серьгам, а&lt;br&gt;будет конкретным сёстрам конкретные серьги.&lt;br&gt;&lt;br&gt;user1 2013-01-014234 http://ya.ru&lt;br&gt;user2 2013-01-033122 http://google.ru&lt;br&gt;&lt;br&gt;Прочитал строку, а в ней сразу указано какому юзеру что и куда.&lt;br&gt;Значения в строке файла должны быть разделены пробелами,&lt;br&gt;url для закачки без кавычек.&lt;br&gt;&#091;code&#093;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;&lt;br&gt;&lt;br&gt;my ($usr, $dir, $url, $out);&lt;br&gt;&lt;br&gt;# корневая директория&lt;br&gt;my $r_dir = &quot;/tmp&quot;;&lt;br&gt;&lt;br&gt;# дополняемый файл вида разделён пробелами&lt;br&gt;# user1 date url&lt;br&gt;# user2 date url&lt;br&gt;my $file = &quot;/tmp/txt&quot;;&lt;br&gt;&lt;br&gt;open FH, $file or die &quot;can&apos;t open $file: $!&quot;;&lt;br&gt;&lt;br&gt;for (;;) &#123;&lt;br&gt;    # вываливаемся если дополняемый файл вдруг удалили или он исчез ))&lt;br&gt;    exit if (stat(FH))&#091;3&#093; == 0;&lt;br&gt;&lt;br&gt;    while (&amp;lt;FH&amp;gt;) &#123;&lt;br&gt;        chomp;&lt;br&gt;&lt;br&gt;        # разбиваем входную строку split&apos;ом по пробелам и складывем в массив&lt;br&gt;        my &#064;str = split(&quot; &quot;, $_);&lt;br&gt;&lt;br&gt;        $usr = $str&#091;0&#093;; # название юзера&lt;br&gt;        $dir = $str&#091;1&#093;; # дире</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (gorlum300)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#6</link>
    <pubDate>Mon, 03 Feb 2014 19:06:05 GMT</pubDate>
    <description>спасибо! похоже начинает работать, однако, у меня выдает ошибки в этом месте:&lt;br&gt;            $out =~ s&amp;#124;.*/(.*)&#092;&quot;&amp;#124;$1&amp;#124;;&lt;br&gt;&lt;br&gt;            mkdir &quot;$r_dir/$dir&quot;;&lt;br&gt;            &#096;touch &quot;$r_dir/$dir/$usr&quot;&#096;;&lt;br&gt;           &#096;wget -O &quot;$r_dir/$dir/$out&quot; $url&#096;;&lt;br&gt;---&lt;br&gt;Global symbol &quot;$out&quot; requires explicit package name at ./workp.pl line 38.&lt;br&gt;Global symbol &quot;$out&quot; requires explicit package name at ./workp.pl line 42.&lt;br&gt;&lt;br&gt;я вот неуверен, что это значит?&lt;br&gt;&lt;br&gt;&amp;gt; какие файлы закачиваются - большие, маленькие?&lt;br&gt;&amp;gt; проверять на обрыв закачки?&lt;br&gt;&amp;gt; что будет если закачка прервётся?&lt;br&gt;&lt;br&gt;закачиваются небольшие файлы по 50-500kb.&lt;br&gt;в идеале, конечно, нужно попробовать добавить вторую попытку скачать, и в случае если закачка не идет(идет не до конца), создавать файл с именем типа warning в директории куда скачиваются файлы.&lt;br&gt;&lt;br&gt;&amp;gt; Лучше было бы писать в дополняемый файл строки массивчиками &lt;br&gt;&amp;gt; user date url &lt;br&gt;&amp;gt; типа &lt;br&gt;&amp;gt; frog32 2013-01-014234 &quot;url&quot; &lt;br&gt;&amp;gt; было бы гораздо надёжнее его потрошить &lt;br&gt;&lt;br&gt;Сейчас потестируем рабочий вариант и если будет</description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (михалыч)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#5</link>
    <pubDate>Mon, 03 Feb 2014 16:53:48 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; var1 frog32&lt;br&gt;&amp;gt; var2 2013-01-014234&lt;br&gt;&amp;gt; var3 &quot;url&quot;&lt;br&gt;&amp;gt; var1 rabit1&lt;br&gt;&amp;gt; var2 2013-01-033122&lt;br&gt;&amp;gt; var3 &quot;url2&quot;&lt;br&gt;&amp;gt; итд&lt;br&gt;&amp;gt; Задача периодически читать этот файл и для новых данных создавать директорию по &lt;br&gt;&amp;gt; имени значения следующего после var2, куда записывать текстовый файл с именем &lt;br&gt;&amp;gt; после var1 и скачивать файл следующий после var3.&lt;br&gt;&lt;br&gt;Похоже как на менеджер закачек файлов по запросу.&lt;br&gt;Попробовал на perl&lt;br&gt;Вроде взлетает и летит ))&lt;br&gt;Но есть подводные камни ((&lt;br&gt;какие файлы закачиваются - большие, маленькие?&lt;br&gt;проверять на обрыв закачки?&lt;br&gt;что будет если закачка прервётся?&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use strict;&lt;br&gt;use warnings;&lt;br&gt;&lt;br&gt;&lt;br&gt;my ($usr, $dir, $url);&lt;br&gt;&lt;br&gt;# корневая директория&lt;br&gt;my $r_dir = &quot;/tmp&quot;;&lt;br&gt;# дополняемый файл&lt;br&gt;my $file = &quot;/tmp/txt&quot;;&lt;br&gt;&lt;br&gt;open FH, $file or die &quot;can&apos;t open $file: $!&quot;;&lt;br&gt;&lt;br&gt;for (;;) &#123;&lt;br&gt;    exit if (stat(FH))&#091;3&#093; == 0;&lt;br&gt;&lt;br&gt;    while (&amp;lt;FH&amp;gt;) &#123;&lt;br&gt;        chomp;&lt;br&gt;&lt;br&gt;        if (/var1/) &#123;&lt;br&gt;            s/^var1&#092;s(.*)$/$1/;&lt;br&gt;            $usr = $1;&lt;br&gt;        &#125;&lt;br&gt;&lt;br&gt;        if (/var2/) &#123;&lt;br&gt;          </description>
</item>

<item>
    <title>как сделать чтобы цикл не останавливался (skb7)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9824.html#4</link>
    <pubDate>Sun, 02 Feb 2014 21:08:34 GMT</pubDate>
    <description>Сорри, в последнем куске кода должно быть:&lt;br&gt;&#091;code&#093;&lt;br&gt;for dir_name in $(tail -n $not_processed_lines file_name &amp;#124; grep var2 &amp;#124; awk &apos;&#123;print $2&#125;&apos;); do &lt;br&gt;    mkdir -p $dir_name &lt;br&gt;    ....&lt;br&gt;done &lt;br&gt;&#091;/code&#093;&lt;br&gt;</description>
</item>

</channel>
</rss>
