2 betik A ve B.Script B'nin A.Bow'da kullanılabilecek bazı değişkenleri vardır.

A ve B iki betikim var. B komut dosyasında A.Also'da kullanacağımız bazı değişkenler var. B komut dosyası üzerinden B komutunu çağırmalıyım. Nasıl olacak?

0
B komut dosyasında, komut A'da çağrılırsa yürütmesi gereken kod var mı?
katma yazar glenn jackman, kaynak

3 cevap

Bu, basit bir yapılandırma bilgisiyse, A veya B'den okunabilecek yapılandırma bilgilerine sahip olduğunuza benzer, daha sonra kullanılarak hem A'dan hem de B'den alınan üçüncü bir C dosyasında belirtilmelidir. ./C mekanizması.

A'dan B'yi aramaya çalışıyorsanız, B değişkenindeki bir değişkeni B olarak ayarlayın ve sonra bu değeri A'da okuyun, ardından ./ B standardını kullanıyorsanız, tüm değişkenler B'nin çağrılmasında belirlenenler, A ortamına geri kopyalanmaz.

Komut dosyaları arasında 'değişkenleri paylaşmanın' en mantıklı yolu, çağrılan komut dosyasının A'nın geçici bir dosyada kullanması gereken değişkenleri çıkarması ve ardından bunu A'dan B'ye göndermesinin sonuca varmasıdır. Daha karmaşık yollar, B'nin değişkenlerin, örn. B içeriyorsa:

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

ve sonra A’da:

output=$(./B)
eval $output
echo $var

22 çıktısını alırdım. Bu, doğru olmak için zor ve sadece komut dosyaları arasında aktarılan değişkenlerin kısa bir listesi için güvenilmelidir.

Değişkenleri paylaşmak için komut dosyalarının elde edilmesinin gerçek yolu, bunların yalnızca işlevleri içermesini sağlamaktır ve A ve B'deki işlevleri çağırdıktan sonra çağrıştıran bir ana komut dosyasına sahiptir.

#!/bin/bash -p

. ./A
. ./B

do_a_stuff
echo $shared_variable
do_b_stuff
echo $shared_variable

A'da kodun B'de koduna bağlı olması, daha sonra bunları kullanarak, bunlar arasında paylaşılan tek bir ad alanıyla sonuçlanırsınız, böylece B'deki A ve A'dan B'ye işlevler çağırabilirsiniz. işlevsel bir hiyerarşinin ihlali ve zayıf kodlama olarak kabul edilir).

1
katma
mükemmel cevap, çok kötü OP, yapmaya çalıştığımız şey hakkında biraz daha spesifik olamaz ;-), tahmin etmemizi ve 2. tahminimizi bize bırakıyor ... Herkese iyi şanslar.
katma yazar shellter, kaynak

Deneyin

 # 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

çıktı:

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

Marge iki script toogether? O zaman bir tane varibler listeniz olacak ve tüm fonksiyonlar tek bir yerde olacak. Eğer bu iki betik çok farklı şeyler yapıyorsa, onları bağımsız yapmaya çalışın.

0
katma