2009-06-19 7 views
29

मुझे एक ऐसा फ़ंक्शन मिला है जिसे मैं संदर्भित करना चाहता हूं और विभिन्न स्क्रिप्ट में उपयोग करना चाहता हूं। क्या इसे करने का कोई तरीका है? मैं अलग-अलग स्क्रिप्ट के लिए एक ही फ़ंक्शन को फिर से लिखना नहीं चाहता हूं। धन्यवाद।क्या विभिन्न स्क्रिप्ट में एक बैश फ़ंक्शन का उपयोग किया जा सकता है?

उत्तर

51

ज़रूर - में अपनी स्क्रिप्ट है, जहां आप समारोह का उपयोग करना चाहते हैं, तो आप की तरह

source function.sh 

जो बिंदु पर फ़ाइल में function.sh की सामग्री सहित जहां आदेश है के बराबर है एक कमांड लिख सकते हैं चलाते हैं। ध्यान दें कि function.sh$PATH में निर्देशिकाओं में से एक में होना चाहिए; यदि ऐसा नहीं है, तो आपको एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता है।

+3

function.sh आपके पाथ में कहीं भी हो सकता है। यदि बैश पॉज़िक्स मोड में है, तो यह वर्तमान निर्देशिका में नहीं दिखेगा। यह सब आदमी पृष्ठ में समझाया गया है। – camh

+0

सच है, मैंने इसे अन्य चीजों के साथ मिश्रित किया था। –

+0

मान लें कि 'function.sh' में भी कुछ कोड है। 'स्रोत function.sh' भी कोड निष्पादित करेगा? – user1527227

9

हां, आप अपने सभी कार्यों को एक सामान्य फ़ाइल (या फ़ाइलों) में स्थानांतरित कर सकते हैं। यह वही है जो मैं अपने सभी उपयोगिता कार्यों के साथ करता हूं।

. $HOME/utility.shinc 

जो वर्तमान खोल के संदर्भ में स्क्रिप्ट निष्पादित करता है: मैं अपने घर निर्देशिका के साथ अपने सभी कार्यक्रमों के द्वारा प्रयोग किया जाता है में एक भी utility.shinc है। यह महत्वपूर्ण है - यदि आप बस स्क्रिप्ट शामिल करते हैं, तो यह एक सबहेल में चलाएगा और कोई भी परिवर्तन वर्तमान खोल में प्रचारित नहीं होगा।

आप स्क्रिप्ट के समूहों के लिए भी वही कर सकते हैं। यदि यह "उत्पाद" का हिस्सा है, तो मैं सभी स्क्रिप्ट्स, और किसी भी स्क्रिप्ट को एक एकल खोल निर्देशिका में रखना चाहता हूं ताकि सब कुछ स्थानीयकृत हो सके।

-2

हाँ..तुम कर सकते हो! अपनी स्क्रिप्ट में स्रोत function_name जोड़ें। मैं वैरिएबल eg.VAR = $ (funtion_name) बनाना पसंद करता हूं, यदि आप #!/Bin/bash के बाद स्रोत function_name जोड़ते हैं तो आपकी स्क्रिप्ट पहले आयातित फ़ंक्शन कार्य निष्पादित करती है और फिर आपके वर्तमान स्क्रिप्ट कार्य को चर और बनाने के लिए बेहतर होती है स्क्रिप्ट में कहीं भी। धन्यवाद ... आपके लिए यह काम करें :)

+0

आप 8 साल पहले पोस्ट किए गए उत्तरों की प्रतिलिपि क्यों बना रहे हैं? –

+0

बेहतर समझ के लिए .. मैंने पहले एक संक्षिप्त रूप से पोस्ट किया है। –

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

  • कोई संबंधित समस्या नहीं^_^