The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Массивы в shell. Непонятный момент., shadowmaan (ok), 13-Ноя-11, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Массивы в shell. Непонятный момент."  +/
Сообщение от allez (ok), 13-Ноя-11, 05:42 
>[оверквотинг удален]
> Если меняю строчку for на следующие
> cat $file |
> while read line; do
> где $file - имя файла со значениями в виде
> 3
> 5
> 8
> то в результате массив nums по выходу из цикла остается нулевым.
> Не могу понять в чем различие. Внутри цикла массив изменяется как положено.
> $BASH_VERSION: 3.2.48(1)-release

Вы наступили на старые проверенные грабли. :-)
Дело в том, что пользуясь конвейером, вы запускаете цикл в отдельном
экземпляре bash и когда цикл отрабатывает, то этот самый отдельный экземпляр
закрывается, унося в небытие все наработанные в нем данные. Попробуйте вместо
конвейера cat | while использовать перенаправление:


while read line; do
. . .
done < $file

Ответить | Правка | Наверх | Cообщить модератору

2. "Массивы в shell. Непонятный момент."  +/
Сообщение от shadowmaan (ok), 13-Ноя-11, 12:12 
> Вы наступили на старые проверенные грабли. :-)
> Дело в том, что пользуясь конвейером, вы запускаете цикл в отдельном
> экземпляре bash и когда цикл отрабатывает, то этот самый отдельный экземпляр
> закрывается, унося в небытие все наработанные в нем данные. Попробуйте вместо
> конвейера cat | while использовать перенаправление:
>
 
> while read line; do
> . . .
> done < $file
>

Да, действительно, с перенаправлением работает.

Было у меня подозрение об отдельном экземпляре, но не смог этого проверить.
$$ и в цикле и вне его возвращало тот же id. Ничего другого не придумал :)

Спасибо.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру