आपके पास मूल रूप से दो विकल्प हैं:
export TESTVARIABLE
2 स्क्रिप्ट को निष्पादित करने से पहले चर को एक पर्यावरण चर ( ) बनाएं ।
- दूसरा लिपि स्रोत,
. test2.sh
और यह एक ही शेल में चलेगा। यह आपको सरणियों जैसे अधिक जटिल चर आसानी से साझा करने देगा, लेकिन इसका अर्थ यह भी है कि अन्य स्क्रिप्ट स्रोत शेल में चर को संशोधित कर सकती है।
अपडेट करें:
export
पर्यावरण चर सेट करने के लिए उपयोग करने के लिए, आप या तो मौजूदा चर का उपयोग कर सकते हैं:
A=10
# ...
export A
यह दोनों में bash
और काम करना चाहिए sh
। bash
इसे भी इस तरह संयोजित करने की अनुमति देता है:
export A=10
यह मेरे sh
(जो होता है bash
, आप echo $SHELL
जांचने के लिए उपयोग कर सकते हैं ) में भी काम करता है । लेकिन मुझे विश्वास नहीं है कि यह सभी में काम करने की गारंटी है sh
, इसलिए इसे सुरक्षित रूप से खेलने और उन्हें अलग करने के लिए सबसे अच्छा है।
आपके द्वारा इस तरह निर्यात की जाने वाली कोई भी स्क्रिप्ट उदाहरण के लिए निष्पादित स्क्रिप्ट में दिखाई देगी:
a.sh:
#!/bin/sh
MESSAGE="hello"
export MESSAGE
./b.sh
b.sh:
#!/bin/sh
echo "The message is: $MESSAGE"
फिर:
$ ./a.sh
The message is: hello
तथ्य यह है कि ये दोनों शैल लिपियां भी सिर्फ आकस्मिक हैं। पर्यावरण चर को आपके द्वारा निष्पादित की जाने वाली किसी भी प्रक्रिया में पारित किया जा सकता है, उदाहरण के लिए यदि हम अजगर का उपयोग करते हैं, तो ऐसा लग सकता है:
a.sh:
#!/bin/sh
MESSAGE="hello"
export MESSAGE
./b.py
b.py:
#!/usr/bin/python
import os
print 'The message is:', os.environ['MESSAGE']
सोर्सिंग:
इसके बजाय हम इस तरह से स्रोत बना सकते हैं:
a.sh:
#!/bin/sh
MESSAGE="hello"
. ./b.sh
b.sh:
#!/bin/sh
echo "The message is: $MESSAGE"
फिर:
$ ./a.sh
The message is: hello
यह कम या ज्यादा b.sh
सीधे "की सामग्री" आयात करता है और इसे एक ही शेल में निष्पादित करता है । ध्यान दें कि हमें इसे एक्सेस करने के लिए वैरिएबल को एक्सपोर्ट नहीं करना था। यह आपके पास मौजूद सभी चर को साझा करता है, साथ ही साथ अन्य स्क्रिप्ट को शेल में वैरिएबल को जोड़ने / हटाने / संशोधित करने की अनुमति देता है। बेशक, इस मॉडल में आपकी दोनों स्क्रिप्ट एक ही भाषा ( sh
या bash
) होनी चाहिए । एक उदाहरण देने के लिए कि हम संदेशों को आगे-पीछे कैसे कर सकते हैं:
a.sh:
#!/bin/sh
MESSAGE="hello"
. ./b.sh
echo "[A] The message is: $MESSAGE"
b.sh:
#!/bin/sh
echo "[B] The message is: $MESSAGE"
MESSAGE="goodbye"
फिर:
$ ./a.sh
[B] The message is: hello
[A] The message is: goodbye
इसमें समान रूप से अच्छी तरह से काम करता है bash
। यह अधिक जटिल डेटा साझा करना भी आसान बनाता है जिसे आप पर्यावरण चर के रूप में व्यक्त नहीं कर सकते हैं (कम से कम अपने हिस्से पर कुछ भारी उठाने के बिना), जैसे कि सरणियाँ या साहचर्य सरणियाँ।