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 <nic.ru; echo "Var=$var"
А вот
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 - аналогично, почему - не понимаю. Подозреваю порядок подстановки...
Reply to: