Re: bash и область видимости переменной в while
Vladimir Skubriev -> Debian-russian @ Tue, 18 Feb 2014 09:08:37 +0400: VS> Сделал так: VS> while read line VS> do VS> if echo "$line" | grep -q 'Installed Size' VS> then VS> module="$( echo "$line" | sed -r 's/(^.*: )(.*)(\(.*$)/\2/' )" VS> printf "MODULE: $module\n" VS> ram_mods="$ram_mods $module" VS> fi VS> done < <(echo "$dmidecode_t6_out") VS> Заработал. VS> Что делают внутренние скобки ? VS> Без них ругался. Которые? Мои? Объединяют while и echo "$var" в один процесс, в который и идет пайп. Но без них ругаться не должно. Или выше вокруг echo? Это синтаксис такой. Подстановка вывода процесса в качестве файла. VS> 17.02.2014, 13:12, "Artem Chuprina" : >> Vladimir Skubriev -> Debian-russian @ Mon, 17 Feb 2014 11:52:06 +0400: >> >> VS> dmidecode_t6_out="$( dmidecode -t 6)" >> VS> >> VS> >> VS> echo "$dmidecode_t6_out" | while read line >> VS> do >> VS> if echo "$line" | grep -q 'Installed Size' >> VS> then >> VS> module="$( echo "$line" | sed -r 's/(^.*: >> )(.*)(\(.*$)/\2/' )" >> VS> printf "Founded MODULE: $module\n" >> VS> ram_mods="$ram_mods $module" >> VS> fi >> VS> done >> VS> >> VS> printf "Modules: $ram_mods\n" >> VS> >> VS> Почему последний printf печатает только Modules без содержания >> переменной $ram_mods ? >> >> Да, помогает извращение вида >> >> var=$(echo -e "qqq\nwww" | ( while read line; do var="$var $line"; done; >> echo "$var" )) >> >> Внутренние скобки существенны. >> >> -- >> To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org >> with a subject of "unsubscribe". Trouble? Contact >> listmas...@lists.debian.org >> Archive: http://lists.debian.org/87ob266r3s@wizzle.ran.pp.ru VS> -- VS> Faithfully yours, VS> Vladimir Skubriev VS> -- VS> To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org VS> with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org VS> Archive: http://lists.debian.org/16811392700...@web21m.yandex.ru -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/8761oc7v1r@wizzle.ran.pp.ru
Re: bash и область видимости переменной в while
Сделал так: while read line do if echo "$line" | grep -q 'Installed Size' then module="$( echo "$line" | sed -r 's/(^.*: )(.*)(\(.*$)/\2/' )" printf "MODULE: $module\n" ram_mods="$ram_mods $module" fi done < <(echo "$dmidecode_t6_out") Заработал. Что делают внутренние скобки ? Без них ругался. 17.02.2014, 13:12, "Artem Chuprina" : > Vladimir Skubriev -> Debian-russian @ Mon, 17 Feb 2014 11:52:06 +0400: > > VS> dmidecode_t6_out="$( dmidecode -t 6)" > VS> > VS> > VS> echo "$dmidecode_t6_out" | while read line > VS> do > VS> if echo "$line" | grep -q 'Installed Size' > VS> then > VS> module="$( echo "$line" | sed -r 's/(^.*: > )(.*)(\(.*$)/\2/' )" > VS> printf "Founded MODULE: $module\n" > VS> ram_mods="$ram_mods $module" > VS> fi > VS> done > VS> > VS> printf "Modules: $ram_mods\n" > VS> > VS> Почему последний printf печатает только Modules без содержания > переменной $ram_mods ? > > Да, помогает извращение вида > > var=$(echo -e "qqq\nwww" | ( while read line; do var="$var $line"; done; echo > "$var" )) > > Внутренние скобки существенны. > > -- > To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org > with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org > Archive: http://lists.debian.org/87ob266r3s@wizzle.ran.pp.ru -- Faithfully yours, Vladimir Skubriev -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/16811392700...@web21m.yandex.ru
Re: кодировка системных собщений
> В /etc/postgresql/9.1/main/environment > добавить LANG = 'ru_RU.UTF-8' > > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=671915 Спасибо. Я правдо уже решил иначе. Отсрелил и отрастил новую ногу. -- __ Dmitry Kapellanov __ RiNet ISP, department technical Support dmit...@rinet.ru +7-(495)-981-45-71 -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140217213146.GB30665@ada
Re: bash и область видимости переменной в while
Vladimir Zhbanov -> debian-russian@lists.debian.org @ Mon, 17 Feb 2014 16:01:00 +0400: >> А вот >> >> while read line; do var="$var $line"; done <(echo -e "qqq\nwww"); echo >> "Var=$var" >> выдает >> bash: syntax error near unexpected token `<(echo -e "qqq\nwww")' >> >> zsh - аналогично, почему - не понимаю. Подозреваю порядок подстановки... VZ> Попробуйте так VZ> while read line; do var="$var $line"; done < <(echo -e "qqq\nwww"); echo "Var=$var" О, работает. Осознал идею, спасибо. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87iosd7m8b@wizzle.ran.pp.ru
Re: bash и область видимости переменной в while
> Потому что пайп создаёт вложенный шелл со своими переменными. Можно > записать во временный файл, который считать после цикла. истинно так, сам натыкался на эти грабли, долго не мог понять, в чем же дело, помогло вдумчивое чтение man bash)) в данном случае можно испольовать что-то типа while read line; do бла-бла-бла done << EOF ...ввод, с которым работаем... EOF смотрел по своему примеру, в котором все работает (кстати, именно с while read line...), переменные видны всем желающим -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140217180755.67637...@ulf.tvoe.tv
Re: bash и область видимости переменной в while
On Mon, Feb 17, 2014 at 01:08:33PM +0400, Artem Chuprina wrote: ... > А вот > > while read line; do var="$var $line"; done <(echo -e "qqq\nwww"); echo > "Var=$var" > выдает > bash: syntax error near unexpected token `<(echo -e "qqq\nwww")' > > zsh - аналогично, почему - не понимаю. Подозреваю порядок подстановки... Попробуйте так while read line; do var="$var $line"; done < <(echo -e "qqq\nwww"); echo "Var=$var" -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140217120100.GA25695@localhost.localdomain
Re: bash и область видимости переменной в while
Vladimir Skubriev -> Debian-russian @ Mon, 17 Feb 2014 11:52:06 +0400: VS> dmidecode_t6_out="$( dmidecode -t 6)" VS> VS> VS> echo "$dmidecode_t6_out" | while read line VS> do VS> if echo "$line" | grep -q 'Installed Size' VS> then VS> module="$( echo "$line" | sed -r 's/(^.*: )(.*)(\(.*$)/\2/' )" VS> printf "Founded MODULE: $module\n" VS> ram_mods="$ram_mods $module" VS> fi VS> done VS> VS> printf "Modules: $ram_mods\n" VS> VS> Почему последний printf печатает только Modules без содержания переменной $ram_mods ? Да, помогает извращение вида var=$(echo -e "qqq\nwww" | ( while read line; do var="$var $line"; done; echo "$var" )) Внутренние скобки существенны. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87ob266r3s@wizzle.ran.pp.ru
Re: bash и область видимости переменной в while
Vladimir Skubriev -> Debian-russian @ Mon, 17 Feb 2014 11:52:06 +0400: VS> VS> VS> dmidecode_t6_out="$( dmidecode -t 6)" VS> VS> VS> echo "$dmidecode_t6_out" | while read line VS> do VS> if echo "$line" | grep -q 'Installed Size' VS> then VS> module="$( echo "$line" | sed -r 's/(^.*: )(.*)(\(.*$)/\2/' )" VS> printf "Founded MODULE: $module\n" VS> ram_mods="$ram_mods $module" VS> fi VS> done VS> VS> printf "Modules: $ram_mods\n" VS> VS> Почему последний printf печатает только Modules без содержания переменной $ram_mods ? VS> VS> Спасибо! Это область видимости не у while, а у |. while запускается в подпроцессе. Но что-то у меня сходу не получилось показать, как правильно. Может, коллеги помогут... Работает sed -e 's/^/zzz/' <(echo -e "qqq\nwww") и работает while read line; do var="$var $line"; done http://lists.debian.org/87siri6r8u@wizzle.ran.pp.ru
Re: bash и область видимости переменной в while
On Mon, 17 Feb 2014 11:52:06 +0400 Vladimir Skubriev wrote: > echo "$dmidecode_t6_out" | while read line > ... > Почему последний printf печатает только Modules без содержания переменной > $ram_mods ? Потому что пайп создаёт вложенный шелл со своими переменными. Можно записать во временный файл, который считать после цикла. -- Alexander Galanin -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140217122952.ee08ae14bccda0e4be0b4...@galanin.nnov.ru