URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2570
[ Назад ]

Исходное сообщение
"Переменные в shell"

Отправлено r4 , 16-Фев-04 18:47 
Здравствуйте.

Как переменные назначенные в одном шелл скрипте сделать доступными в другом(хотя бы родительском)?

Тоесть a.sh вызывает b.sh, в котором задаюца значения некоторых переменных, и потом когда b.sh возвращает управление a.sh, то a.sh уже
"знает" эти переменные. Желательно с примерами %)


Содержание

Сообщения в этом обсуждении
"Переменные в shell"
Отправлено vt , 17-Фев-04 15:15 
> Как переменные назначенные в одном шелл скрипте сделать доступными в другом(хотя
>бы родительском)?

Если именно в "родительском", то никак.
Если наоборот, то
export var1 var2 ...


"Переменные в shell"
Отправлено DonkeyHot , 18-Фев-04 12:43 
>Если именно в "родительском", то никак.

Что значит "никак"? Вот 2 способа:

1. в первом: { . второй }

2. в первом: { eval `второй` }
  во втором: { for i in $vars ; do echo $var="'"$var"'" ; done }


"Переменные в shell"
Отправлено vt , 18-Фев-04 20:41 
>1. в первом: { . второй }

Это не вызов второго скрипта из первого,
а подстановка текста второго скрипта в первый.
"Почувствуйте разницу" -
ВСЕ преременные второго скрипта должны иметь имена,
отличающиеся от имен переменных первого скрипта.

>2. в первом: { eval `второй` }
>во втором: { for i in $vars ; do echo $var="'"$var"'" ; done }

Даже если исправить здесь ошибки,
сама идея явно подставить первому скрипту строчки
определений переменных выводом через stdout не катит,
т.к. мало ли что еще может выводить второй скрипт на stdout.

Так что, вынужден настаивать на "никак" :)


"Переменные в shell"
Отправлено DonkeyHot , 20-Фев-04 11:22 
Конечно не вызов. Но результат _может_ быть правильным - в зависимости от содержания второго скрипта:-)

Что касается второго - то действительно, наошибался я не мало. Но все же
так во многих местах работает. А если нужно еще что-то выводить на stdout - всегда можно воспользоваться промежуточным файликом.

>Так что, вынужден настаивать на "никак" :)

Вынужден возражать:-)

Скорее стоит говорить, что "если такое понадобилось - нужно переписать оба скрипта".