1

Гопода, извиняюсь за нубский вопрос, но после 4 часов ночного дебага скриптов выяснил что переменные заданные в "головном" скрипте не передаются в исполняющий непосредственно прогу скрипт. В связи с этим возник вопрос:
Как передать переменные (несколько) из одного скрипта в другой?
ЗЫ если несложно, то приведите пожалуйста примеры для лучшего понимания, так как я в интернете ничего не нашел кроме команды env. Или дайте ссылку где это подробно описано.

2

язык?

3

Rabat пишет:

язык?

OS = FreeBSD 9.1
shell = /bin/sh
имеются ввиду sh - скрипты

4

Fast Deer пишет:

Как передать переменные (несколько) из одного скрипта в другой?

Не совсем понял, но...

 Консоль:

lupo@gentoo-laptop temp % cat function.sh
#!/bin/bash
var1="one"
var2="two"
lupo@gentoo-laptop temp % cat function_2.sh
#!/bin/bash
var3="three"
var4="four"
lupo@gentoo-laptop temp % cat test.sh
#!/bin/bash
source function.sh
echo ${var2}
echo ${var1}

# ...или так
. function_2.sh
echo ${var3}
echo ${var4}
lupo@gentoo-laptop temp % ./test.sh
two
one
three
four

Был, был и весь вышел...

5

да, но почему просто не задать те же самые переменные во втором скрипте?

6

Rabat пишет:

да, но почему просто не задать те же самые переменные во втором скрипте?

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

Был, был и весь вышел...

7 (07.01.2013 21:44:48 отредактировано Fast Deer)

Rabat пишет:

да, но почему просто не задать те же самые переменные во втором скрипте?

когда у тебя идет цепочка вызовов из скрипта в скрипт, которые расположены в разных местах, то то править каждый раз в каждом скрипте одни и те же параметры нецелесообразно а иногда и просто муторно. намного проще объявить эти переменные  в стартовом скрипте (или отдельно) и уже от туда их править.
2 Lupo Alberto: про вариант вызова с точкой я как то не подумал (забыл, не знал и пр) - надо будет попробовать. На сколько я понял нужно просто создать файл с описанием всех переменных, а потом просто вызвать в скрипте запуска его с полным путем с точкой?:
. /путь/function_2.sh

8

Fast Deer пишет:

На сколько я понял нужно просто создать файл с описанием всех переменных, а потом просто вызвать в скрипте запуска его с полным путем с точкой?:

В данном случае точка не указание на текущий каталог, а аналог команды source, и между ней и файлом должен быть пробел.

Был, был и весь вышел...

9

Lupo Alberto пишет:
Fast Deer пишет:

На сколько я понял нужно просто создать файл с описанием всех переменных, а потом просто вызвать в скрипте запуска его с полным путем с точкой?:

В данном случае точка не указание на текущий каталог, а аналог команды source, и между ней и файлом должен быть пробел.

это я понял - видел такое в rc.d скриптах
Спасибо! буду думать и пробовать