передать переменные в другой скрипт bash

Модератор: Модераторы разделов

Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

передать переменные в другой скрипт bash

Сообщение TuLiss »

В общем надо передать переменные из одного скрипта в другой.
Обрисую, что у меня происходит.

Есть некая папка conf, в который лежат файлы с переменными.
Вызываемый скрипт циклом for перебирает файлы и подгружает переменные "source file"

Код: Выделить всё

for file in ../conf/*;
do
   if [ -f $file ]; then
        source $file;
else
        echo "File configuration not found"
fi
done


проблема, если мы вызываем другой скрипт , то переменные не передаются.
В голову только приходит, всё содержимое файла сделать функцией и вызывать ее.

P.S. Делать глобальные переменные я не хочу.
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21230
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: передать переменные в другой скрипт bash

Сообщение Bizdelnick »

TuLiss писал(а):
28.04.2015 13:06
Делать глобальные переменные я не хочу.

В шелле все переменные глобальные (хотя в bash можно и локальные делать). Имели в виду, что экспортировать не хотите? Тогда вместо того, чтобы вызывать другой скрипт, можно его сорсить, хотя не исключено, что его придётся переделывать для такого использования. Ну или в каждый вызываемый скрипт сорсить файлы с определением переменных. Ещё можно передавать значения конкретных переменных скрипту аргументами (если их не очень много, я бы, наверное, так и сделал).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: передать переменные в другой скрипт bash

Сообщение TuLiss »

Bizdelnick писал(а):
28.04.2015 13:32
TuLiss писал(а):
28.04.2015 13:06
Делать глобальные переменные я не хочу.

В шелле все переменные глобальные (хотя в bash можно и локальные делать). Имели в виду, что экспортировать не хотите? Тогда вместо того, чтобы вызывать другой скрипт, можно его сорсить, хотя не исключено, что его придётся переделывать для такого использования. Ну или в каждый вызываемый скрипт сорсить файлы с определением переменных.



Я имел ввиду Глобальные переменные и переменные среды окружения.
Можно и source сделать как с переменными, что-то я тут как то ступил.

P.S. В общем если сделать source нужный_файл, то мы полностью выйдем из цикла for. Он выполнится только один раз,думаю проще будет сделать все через функции.

UPD.

В общем я где то туплю. Если сделать элементарно , в conf положить два файла с переменными test , и прогнать их через for с выводом по echo, оно отработает нормально, если запускаем скрипт то будет всего 1 запуск.
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: передать переменные в другой скрипт bash

Сообщение NickLion »

TuLiss
Вы про что-то такое или я не понял о чём Вы:

Код: Выделить всё

nicklion@warlock:~> cat aa.sh
#!/bin/sh

export var=123
nicklion@warlock:~> cat bb.sh
#!/bin/sh

. ./aa.sh
echo $var
nicklion@warlock:~> sh bb.sh
123
Спасибо сказали:
Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: передать переменные в другой скрипт bash

Сообщение TuLiss »

NickLion писал(а):
28.04.2015 14:44
TuLiss
Вы про что-то такое или я не понял о чём Вы:


нет.

for file in ../conf/*;
do
if [ -f $file ]; then
source $file;
echo $test
else
echo "File configuration not found"
fi
done


в conf положил файлы с переменной test=test1 и во втором test=test2

если запустим получим
test2
test1


P.S. Все я понял, сам дурак. В запускаемом скрипте использовал exit 1 ;)
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: передать переменные в другой скрипт bash

Сообщение NickLion »

TuLiss
Ну, . и source это одно и то же, насколько я знаю.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21230
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: передать переменные в другой скрипт bash

Сообщение Bizdelnick »

NickLion писал(а):
28.04.2015 23:12
Ну, . и source это одно и то же, насколько я знаю.

С той разницей, что source — башизм, а . есть в любом POSIX-совместимом шелле.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: