2015-01-04 10 views
6

मुझे SO पर एक समान प्रश्न नहीं मिल रहा है।बैश - दूसरी स्क्रिप्ट के तर्क के रूप में पास स्क्रिप्ट

मैं बैश स्क्रिप्ट को किसी अन्य बैश स्क्रिप्ट के तर्क के रूप में कैसे ठीक से पास कर सकता हूं।

उदाहरण के लिए, मान लें कि मेरे पास दो स्क्रिप्ट हैं जो प्रत्येक कई पैरामीटर स्वीकार कर सकती हैं, मैं एक स्क्रिप्ट को दूसरे के तर्क के रूप में पास करना चाहता हूं। कुछ की तरह:

./script1 (./script2 file1 file2) file3 

उपरोक्त उदाहरण में, script2 एक साथ file1 और करें 2 विलीन हो जाती है, और एक नई फ़ाइल echos, हालांकि उस प्रश्न का कोई वास्ता नहीं है। मैं सिर्फ यह जानना चाहता हूं कि मैं पैरामीटर के रूप में script2 कैसे पास कर सकता हूं, यानी उचित वाक्यविन्यास।

यदि यह संभव नहीं है, तो इस मुद्दे को बाधित करने के तरीके के बारे में कोई संकेत उचित होगा।

+0

एक बार जब आप इसे 'script1'' पर पारित कर लेते हैं, तो आप 'script2' का उपयोग कैसे करना चाहते हैं? –

+0

फिलहाल, मुझे पूरा यकीन नहीं है, 'स्क्रिप्ट 1' मैं पैरामीटर की सभी सामग्री पर बस पुनरावृत्ति का उपयोग कर रहा था। लेकिन, मुझे यह पता लगाने में दिलचस्पी है कि मैं स्क्रिप्ट को पैरामीटर के रूप में कैसे पारित कर सकता हूं, क्योंकि यह मेरे लिए काम नहीं कर रहा है। – Bolboa

+2

यह अभी भी मुझे स्पष्ट नहीं है कि आप क्या हासिल करना चाहते हैं, या पैरामीटर के रूप में स्क्रिप्ट को पारित करने का वास्तव में क्या मतलब है। पैरामीटर्स सिर्फ तार हैं। संभवतः आप कुछ बिंदुओं पर फ़ाइल नाम 'file1' और' file2' को पास करने के लिए 'script2'' को चलाने के लिए चाहते हैं। क्या इस कार्रवाई के परिणाम को पारित करने के लिए पर्याप्त होगा? –

उत्तर

3

आपने पिछले एक के अंदर यह निष्पादित करने के लिए, बस के अंदर script1 निम्नलिखित कोड डाल दिया और फोन script1 इस तरह script1 लिए एक तर्क के रूप script2 पास करना चाहते हैं:

./script1 "./script2 file1 file2" file3 # file4 file5 

कोड अंदर script1:

$1 # here you're executing ./script2 file1 file2 
shift 
another_command "[email protected]" # do anything else with the rest of params (file3) 

या यदि आप script2 लिए पैरामीटर की संख्या को जानते हैं और यह तय हो गई है, तो आप भी ऐसा कर सकते हैं इस प्रकार है:

./script1 ./script2 file1 file2 file3 # file4 file5 

कोड अंदर script1:

"$1" "$2" "$3" 
shift 3 
another_command "[email protected]" # do anything else with the rest of params (file3) 
5

यदि आप पैरामीटर के रूप में script2 का मूल्यांकन करने के परिणाम को पास करना चाहते हैं, तो $() का उपयोग करें। याद रखें कि आपको इसे उद्धृत करना होगा।

./script1 "$(./script2 file1 file2)" file3 
+7

जहां _evaluating_ का मतलब मानक आउटपुट को एक पैरामीटर_ के रूप में _capturing करना है। – kojiro

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