LINUX.ORG.RU

Видимость переменных в shell

 ,


0

1

Допустим, есть файл foo

echo a
есть файл bar
a=100
eval echo \$`./foo`
выводит 100, все норм. Также, если в интерактивном режиме напечатаем, например:
a=1
eval echo \$`./foo`
Тоже работает как ожидается: 1

Но, если в интерактивном определить a=1, а в файле bar не определять a, а написать просто:

eval echo \$`./foo`
то изнутри файла не видно, переменную, определенную в интерактивном режиме. Ничего не печатается.

Как сделать переменную, определенную в интерактивном режиме видимой изнутри файла bar?



Последнее исправление: selena-gomes (всего исправлений: 2)
Ответ на: комментарий от selena-gomes

При запуске файла создается дочерний процесс, и в его окружение попадают только те переменные, которые отмечены для экспортирования

urquan
()

если уже дошли до функций в bash, то в функциях удобно использовать локальные переменные, объявляются и инициализируются так:

local a=1

anonymous
()
Ответ на: комментарий от anonymous

local a=1

Вообще-то в теме указано: sh / shell, так что перед вбросом все же уточняй, что «local» - расширение (например) bash.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.