Форум 3DNews
Вернуться   Форум 3DNews > Софт > Linux & FreeBSD

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 18.06.2008, 10:54   [включить плавающее окно]   #1
leniviy
Мужской Продвинутый
Автор темы
 
Аватар для leniviy
 
Регистрация: 14.03.2007
Адрес: СПб
туплю с командой read. видимость переменных

Здравствуйте. Есть программа, которая выводит результаты в виде таблицы (точнее я через grep ищу в выводе одну единственную строку). разделитель пробел. Хочу прочитать каждое поле в переменную. Обычная конструкция такая:
Код:
echo -e "1 2 3\n4 5 6" | while read A B C; do 
 echo "inside while read A=$A B=$B C=$C"; 
done
внутри цикла переменные видны. Но мне надо вызывать прогу (в данном случае echo "1 2 3") внутри другого цикла и сохранять прочитанные переменные до следующего вызова.
Код:
A_SUM=0; B_SUM=0; C_SUM=0;
while [ 1 = 1 ]; do
 echo "1 2 3" | while read A B C; do 
  echo "inside while read A=$A B=$B C=$C"; 
 done
 A_SUM=$((A_SUM+A)); B_SUM=$((B_SUM+B)); C_SUM=$((C_SUM+C));
 echo "A_SUM=$A_SUM B_SUM=$B_SUM C_SUM=$C_SUM"; 
 sleep 1
done
вне цикла while read переменные $A, $B, $C не видны. Что же делать?
__________________
Особо циничные могут стукнуть разводным ключом

Последний раз редактировалось leniviy; 18.06.2008 в 10:58.
leniviy вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.06.2008, 14:49   [включить плавающее окно]   #2
anonymouse
Женский Продвинутый
 
Регистрация: 04.05.2008
[ соблюдайте приличие ]

почитай лучше мануалы.
__________________
анонимный анонимаус.

Последний раз редактировалось pl_Vah; 18.06.2008 в 15:23.
anonymouse вне форума  
Ответить с цитированием
Непрочитано 18.06.2008, 15:24   [включить плавающее окно]   #3
pl_Vah
Мужской Опытный
 
Аватар для pl_Vah
 
Регистрация: 25.05.2004
Адрес: Moscow
Цитата (anonymouse) »
[ соблюдайте приличие ]

почитай лучше мануалы.
не вижу ссылки на мануалы. Умный/ая? - тыкни пальцем в строчку!
pl_Vah вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.06.2008, 15:47   [включить плавающее окно]   #4
leniviy
Мужской Продвинутый
Автор темы
 
Аватар для leniviy
 
Регистрация: 14.03.2007
Адрес: СПб
опять флудят в моих топиках
Нашел причину: просто так команда read не создает новый процесс, а при любом использовании пайпов read и соответствующий блок кода выполняется в новом процессе, и поэтому не влияет на переменные родителя.
решение:
Код:
read A B C << HERE
 $(echo "1 2 3")
HERE
echo $A $B $C
__________________
Особо циничные могут стукнуть разводным ключом
leniviy вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 22.06.2008, 19:47   [включить плавающее окно]   #5
anonymouse
Женский Продвинутый
 
Регистрация: 04.05.2008
Цитата (pl_Vah) »
Цитата (anonymouse) »
[ соблюдайте приличие ]

почитай лучше мануалы.
не вижу ссылки на мануалы. Умный/ая? - тыкни пальцем в строчку!
а может еще куда тыкать ? вообщем-то можно и обычным for обойтись
__________________
анонимный анонимаус.
anonymouse вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:25. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey