Це звучить так, що у вас є інформація про конфігурацію, яку можна прочитати з A або B, якщо це проста інформація про конфігурацію, то вона повинна бути вказана в третьому файлі C, який походить з обох сторін A і B за допомогою . ./C
.
якщо ви намагаєтеся викликати B з A, встановіть змінну у виклику B, а потім прочитайте це значення в A, тоді, якщо ви використовуєте стандартний ./B
, то всі змінні що встановлюються при виклику B не копіюються назад в середовище A.
Найбільш розумний спосіб «обміну змінних» між скриптами полягає в тому, щоб викликати скрипт виведення змінних, які A потрібно використовувати у тимчасовий файл, а потім вивести джерело з A, коли B завершив виконання. Більш складні способи включають в себе B echoing змінних в eval'able рядок, який оцінюється в A, напр. якщо B містить:
#!/bin/bash -p
echo var=22
а потім в A я:
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 з B (майте на увазі, що це порушення функціональної ієрархії, і вважається поганим кодуванням).