The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"bash scripting теряется значение переменной"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"bash scripting теряется значение переменной"  
Сообщение от serg3263 (??) on 20-Мрт-06, 12:37 
ЕСТЬ:
Скрипт sh
-------------------------------------------
var=volue1
cat $fileToParse | while read ....
do
  ...
  var=volue2
  ...
done
echo ' var '$var
---------------------------------------------
Проблема: результат -- только volue1, все значения переменных, возм-но, и переменные,
используемые в конвейере cat ... | while теряются.

ВОПРОС:
Как передать\соxpанить значение переменной var после выполнения cat ... | while ?

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

 Оглавление

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


1. "bash scripting теряется значение переменной"  
Сообщение от newser (ok) on 20-Мрт-06, 12:57 
>ЕСТЬ:
>Скрипт sh
>-------------------------------------------
>var=volue1
>cat $fileToParse | while read ....
>do
>  ...
>  var=volue2
>  ...
>done
>echo ' var '$var
>---------------------------------------------
>Проблема: результат -- только volue1, все значения переменных, возм-но, и переменные,
>используемые в конвейере cat ... | while теряются.
>
>ВОПРОС:
>Как передать\соxpанить значение переменной var после выполнения cat ... | while ?
>


Не совсем понятна, точнее совсем непонятна Ваша проблема. Судя по Вашему скрипту, если ДЕЙСТВИТЕЛЬНО происходит обработка cat ... | while, то значение var на выходе должно содержать volue2, если же нет, то вполне очевидно, что volue1.

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

2. "bash scripting теряется значение переменной"  
Сообщение от serg3263 (??) on 20-Мрт-06, 13:19 

>Не совсем понятна, точнее совсем непонятна Ваша проблема. Судя по Вашему скрипту,
>если ДЕЙСТВИТЕЛЬНО происходит обработка cat ... | while, то значение var
>на выходе должно содержать volue2, если же нет, то вполне очевидно,
>что volue1.

Значение volue2 "теряется", если определить другую переменную, напр var2 и писвоить ей значение в обработке cat .. | while, то по завершении cat её значение будет пустым.

cat ... | while read ...
do
  ...
  var2=volume21
  echo ' var2 is : '$var2
  ...
done
echo 'var2 after cat is : '$var2


Первый вывод выведет значение
var2 is : volume21

Второй вывод введет пустое
var2 is :

Переменная удалена после завершения cat ... | while ...
т. е. для выполнения cat sh выделила "отдельный" набор переменных, который затем был
удален.

Как "передать" значения из отдельной сессии sh или "назначить" имеющиеся переменные к использованию в отдельной сессии sh?

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

4. "bash scripting теряется значение переменной"  
Сообщение от madskull (ok) on 20-Мрт-06, 13:23 

>Не совсем понятна, точнее совсем непонятна Ваша проблема. Судя по Вашему скрипту,
>если ДЕЙСТВИТЕЛЬНО происходит обработка cat ... | while, то значение var
>на выходе должно содержать volue2, если же нет, то вполне очевидно,
>что volue1.

Вы бы сперва проверили, а потом рассуждали теоритически.
Здесь Вам не тут, в баше другие законы :)

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

6. "bash scripting теряется значение переменной"  
Сообщение от newser (ok) on 20-Мрт-06, 14:50 
>
>>Не совсем понятна, точнее совсем непонятна Ваша проблема. Судя по Вашему скрипту,
>>если ДЕЙСТВИТЕЛЬНО происходит обработка cat ... | while, то значение var
>>на выходе должно содержать volue2, если же нет, то вполне очевидно,
>>что volue1.
>
>Вы бы сперва проверили, а потом рассуждали теоритически.
>Здесь Вам не тут, в баше другие законы :)


Сорри, с башем не дружу. В "чистом" sh все работает. :)

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

3. "bash scripting теряется значение переменной"  
Сообщение от madskull (ok) on 20-Мрт-06, 13:21 
Эта проблема (хоть это и не проблема вовсе) не раз уже обсуждалась.
Вдумайтесь, что происходит: cat через пайп запускает новый процесс с while. следовательно, все окружение процесса с while теряется при выходе из него.

Решение - использовать что-то вроде:
while ... done < <(cat ...)


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

5. "bash scripting теряется значение переменной"  
Сообщение от serg3263 (??) on 20-Мрт-06, 14:15 
>Эта проблема (хоть это и не проблема вовсе) не раз уже обсуждалась.
>
>Вдумайтесь, что происходит: cat через пайп запускает новый процесс с while. следовательно,
>все окружение процесса с while теряется при выходе из него.
>
>Решение - использовать что-то вроде:
>while ... done < <(cat ...)


Cпсб,

использовал:
----------------------------------
while read ...
do
  ...
  var=volume2
  ...
done < $fileToBeReadName
echo $var
----------------------------------

Результат: полученные в цикле while значения.

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

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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