2 сценарийі A және B.Script B кейбір айнымалы мәндері бар, олар А-да қолданылуы тиіс

Менде A және B екі сценарийі бар. B сценарийінде кейбір айнымалылар бар, олар А-да қолданылуы тиіс. Сонымен қатар, сценарий B-ге сценарий арқылы қоңырау шалу керек.

0
B сценарийінің коды бар ма, ол емес A сценарийіне шақырылған жағдайда орындалады?
қосылды автор glenn jackman, көзі

3 жауаптар

Бұл конфигурация туралы ақпарат бар, олар A немесе B-ден оқылуы мүмкін, егер ол қарапайым конфигурация туралы ақпарат болса, онда ол арқылы A және B-тен алынған C файлындағы үшінші файлда көрсетілуі керек. ./C механизмі.

егер сіз А-дан А-ға қоңырау шала берсеңіз, B-ге қоңырауда айнымалы мәнді орнатыңыз, содан кейін осы мәнді A-де оқыңыз, содан кейін стандартты ./ B пайдалансаңыз, онда барлық айнымалылар B инволюциясында белгіленетін А-ның қоршаған ортасына көшірілмейді.

Сценарийлер арасында «айнымалыларды ортақ пайдаланудың» ең ақылға қонымды тәсілі деп аталатын сценарийді А уақытша файлда қолдануға болатын айнымалы мәндер шығарады, содан кейін A B уақытынан бастап бұл іске қосылды. А астам күрделі тәсілдер айнымалы мәндерді A бағаланатын бағаланатын жолға шығарады. егер B құрамында болса:

#!/bin/bash -p
echo var=22

содан кейін А мен:

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

егер А-дан код B-ға тәуелді болса, онда оларды іздеу арқылы сіз олардың арасында ортақ пайдаланылатын бірыңғай ат кеңістігімен аяқталады, сондықтан сіз B-ден А және А-дан функцияларды шақыра аласыз (бұл сіз функционалдық иерархияны бұзу және кодтаудың нашар түрі болып табылады).

1
қосылды
тамаша жауап, тым нашар ОП, не істеу керек екендігі туралы біршама нақты болмауы мүмкін ;-), бізді болжау үшін қалдырып, 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
қосылды

Екі сценарийді толығымен орындаңыз ба? Содан кейін сізде бір тізбесі болады және барлық функциялары бір жерде болады. Егер бұл екі сценарий бір-бірінен айырмашылығы бар нәрселерді жасаса, онда оларды тәуелсіз жасауға тырысыңыз.

0
қосылды