Re: bash и область видимости переменной в while

2014-02-17 Пенетрантность Artem Chuprina
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

2014-02-17 Пенетрантность Vladimir Skubriev
Сделал так:

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: кодировка системных собщений

2014-02-17 Пенетрантность Dmitryv Volkov
> В /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

2014-02-17 Пенетрантность Artem Chuprina
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

2014-02-17 Пенетрантность dimas
> Потому что пайп создаёт вложенный шелл со своими переменными. Можно
> записать во временный файл, который считать после цикла.
истинно так, сам натыкался на эти грабли, долго не мог понять, в чем же дело,
помогло вдумчивое чтение 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

2014-02-17 Пенетрантность Vladimir Zhbanov
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

2014-02-17 Пенетрантность 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



Re: bash и область видимости переменной в while

2014-02-17 Пенетрантность Artem Chuprina
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

2014-02-17 Пенетрантность Alexander Galanin
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