[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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" <ran@ran.pp.ru>:
 >> 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-REQUEST@lists.debian.org
 >> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 >> Archive: 87ob266r3s.fsf@wizzle.ran.pp.ru">http://lists.debian.org/87ob266r3s.fsf@wizzle.ran.pp.ru

 VS> --
 VS> Faithfully yours,

 VS> Vladimir Skubriev


 VS> -- 
 VS> To UNSUBSCRIBE, email to debian-russian-REQUEST@lists.debian.org
 VS> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 VS> Archive: 16811392700117@web21m.yandex.ru">http://lists.debian.org/16811392700117@web21m.yandex.ru


Reply to: