Звучит так, как будто у вас есть информация о конфигурации, которую можно прочитать из A или B, если это простая информация о конфигурации, то она должна быть указана в третьем файле C, который получен из A и B с использованием . ./C
механизм.
если вы пытаетесь вызвать B из A, установите переменную в вызове B и затем прочитайте это значение в A, тогда, если вы используете стандарт ./B
, то всепеременные, которые устанавливаются в вызове B, не копируются обратно в среду A.
Наиболее разумный способ «разделения переменных» между сценариями - это вызов вызываемого сценария для вывода переменных, которые необходимы A.использовать во временный файл, а затем получить его из A после того, как B завершил его выполнение.Более сложные способы включают B, выводящий переменные в eval'able строку, которая вычисляется в A, например, если B содержит:
#!/bin/bash -p
echo var=22
, а затем в AI делают:
output=$(./B)
eval $output
echo $var
Я быполучить вывод 22
.Это сложно сделать правильно, и на него следует полагаться только для краткого списка переменных, передаваемых между сценариями.
Реальный способ заставить сценарии совместно использовать переменные - это заставить их содержать только функции,и иметь главный сценарий, который вызывает функции в A и B после их поиска, например,
#!/bin/bash -p
. ./A
. ./B
do_a_stuff
echo $shared_variable
do_b_stuff
echo $shared_variable
, если в A есть код, который зависит от кода в B, то, получив их, вы получитеединое пространство имен, которое совместно используется ими, так что вы можете вызывать функции в B из A и A из B (учтите, что это нарушение функциональной иерархии и считается плохим кодированием).