Здравствуйте.Как переменные назначенные в одном шелл скрипте сделать доступными в другом(хотя бы родительском)?
Тоесть a.sh вызывает b.sh, в котором задаюца значения некоторых переменных, и потом когда b.sh возвращает управление a.sh, то a.sh уже
"знает" эти переменные. Желательно с примерами %)
> Как переменные назначенные в одном шелл скрипте сделать доступными в другом(хотя
>бы родительском)?Если именно в "родительском", то никак.
Если наоборот, то
export var1 var2 ...
>Если именно в "родительском", то никак.Что значит "никак"? Вот 2 способа:
1. в первом: { . второй }
2. в первом: { eval `второй` }
во втором: { for i in $vars ; do echo $var="'"$var"'" ; done }
>1. в первом: { . второй }Это не вызов второго скрипта из первого,
а подстановка текста второго скрипта в первый.
"Почувствуйте разницу" -
ВСЕ преременные второго скрипта должны иметь имена,
отличающиеся от имен переменных первого скрипта.>2. в первом: { eval `второй` }
>во втором: { for i in $vars ; do echo $var="'"$var"'" ; done }Даже если исправить здесь ошибки,
сама идея явно подставить первому скрипту строчки
определений переменных выводом через stdout не катит,
т.к. мало ли что еще может выводить второй скрипт на stdout.Так что, вынужден настаивать на "никак" :)
Конечно не вызов. Но результат _может_ быть правильным - в зависимости от содержания второго скрипта:-)Что касается второго - то действительно, наошибался я не мало. Но все же
так во многих местах работает. А если нужно еще что-то выводить на stdout - всегда можно воспользоваться промежуточным файликом.>Так что, вынужден настаивать на "никак" :)
Вынужден возражать:-)
Скорее стоит говорить, что "если такое понадобилось - нужно переписать оба скрипта".