2 сценарії A і B.Script B мають деякі змінні, які повинні використовуватися в A.How я повинен йти про це

У мене є два сценарії A і B. Сценарій B має деякі змінні, які повинні бути використані в A.Also я повинен викликати сценарій B через сценарій A. Як я повинен йти про це?

0
Чи є код у сценарії B, який не виконуватиметься, якщо викликається скриптом A?
додано Автор glenn jackman, джерело

3 Відповіді

Це звучить так, що у вас є інформація про конфігурацію, яку можна прочитати з 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 (майте на увазі, що це порушення функціональної ієрархії, і вважається поганим кодуванням).

1
додано
відмінна відповідь, надто поганий OP не може бути трохи більш конкретні про те, що вони намагаються зробити ;-), залишивши нас здогадатися і 2-й здогадки ... Удачі всім.
додано Автор shellter, джерело

Спробуйте

 # cat B
 #!/bin/bash
 echo "Date is: `date`"

 # cat A
 #!/bin/bash
 echo "You are login as: `whoami`"
 echo "`/bin/sh ./B`" # exact path for the script file

вихід:

  # ./A
  You are login as: root
  Date is: Thu Oct 17 02:56:36 EDT 2013
0
додано

Марджє два сценарії разом? Тоді у вас буде один список varibles і всі функції будуть в одному місці. Якщо ці два сценарії роблять деякі дуже різні речі, то спробуйте зробити їх незалежними.

0
додано