2009-05-02 13 views
9

बैश कमांड लाइन में, मैंने एक चर MyPath =/home/user/dir सेट किया है। मैंने एक स्क्रिप्ट बनाई जिसमें मैंने $ myPath echo डाल दिया लेकिन यह काम नहीं कर रहा है। यह कुछ भी गूंजता है। स्क्रिप्ट में myPath चर का उपयोग करने के लिए मैं क्या कर सकता हूं। अगर मैं कमांड में $ myPath लिखता हूं, तो यह काम करता है, लेकिन स्क्रिप्ट में नहीं।एक बैश स्क्रिप्ट में एक चर का उपयोग करें

उत्तर

8

export myPath=/home/user/dir 
+1

अपने बैश प्रोफाइल में निर्यात var का भी उपयोग करें - यदि आप अपनी स्क्रिप्ट इन चरों तक पहुंचने के लिए चाहते हैं। उदाहरण के लिए JAVA_HOME – LukeSolar

+0

यह भ्रामक है। वर्तमान निर्यात पर 'निर्यात' का कोई दृश्य प्रभाव नहीं पड़ता है। यह तब उपयोगी होता है जब चर के मूल्य को वर्तमान खोल से शुरू होने वाले उपप्रोसेसेस के लिए दृश्यमान किया जाना चाहिए। – tripleee

+0

@ ट्रिपली वास्तव में, और जब तक कि मैं कुछ याद नहीं कर रहा हूं, वही सवाल है जो सवाल पूछ रहा है: एक उपप्रोसेसर से एक चर का उपयोग कैसे करें (जो एक शेल स्क्रिप्ट निष्पादित कर रहा है)। –

18

कैसे चर निर्दिष्ट किया प्रयास करें? यह किया जाना चाहिए था:

$ export myPath="/home/user/dir" 

तो अंदर एक खोल प्रोग्राम की तरह:

#!/usr/bin/env bash 
echo $myPath 

आप इच्छित परिणाम प्राप्त करेंगे।

+1

यदि आपको इसे किसी अन्य उद्धृत स्ट्रिंग के अंदर उपयोग करने की आवश्यकता है, तो आप "पथ $ {myPath}" गूंज भी कर सकते हैं –

5

तुम भी ऐसा कर सकता है बस myscript

myPath="whatever" ./myscript 

वातावरण चर के लिए भर्ती कराया मुश्किल वाक्य रचना की जानकारी के लिए के लिए myPath चर सेट करने के लिए देखें: http://www.pixelbeat.org/docs/env.html

1

आप के साथ अपने चर काम घोषित करना चाहिए " निर्यात "के रूप में:

export myPath="/home/user/dir" 

इससे शैवाल को एनवीरो में चर शामिल करना होगा subprocesses की शुरूआत यह शुरू होता है। डिफ़ॉल्ट रूप से, आप घोषित चर (बिना "निर्यात" के) एक उपप्रोसेसर पर पास नहीं किए जाते हैं। यही कारण है कि आपने शुरू में परिणाम प्राप्त नहीं किया था।

संबंधित मुद्दे