2012-01-08 14 views
6

मैं एक खोल स्क्रिप्ट foo.sh जो सामग्री के साथ एक qsub काम है। अगर मैं qsub foo.sh a b को कॉल करता हूं तो पहला तर्क सही ढंग से संसाधित हो जाता है और कमांड लाइन को 'ए' के ​​रूप में प्रतिबिंबित किया जाता है। हालांकि, मुझे नहीं पता कि दूसरे मामले में '# $ -N' से शुरू होने वाले तर्क को कैसे पास किया जाए। इस मामले में $ 2 का मूल्यांकन 'बी' के लिए नहीं किया जाता है लेकिन वास्तव में '$ 2' सेट किया जाता है। सहायता के लिए बहुत आभार होगा।तर्क .sh स्क्रिप्ट में गुजर

+0

मुझे लगता है कि आपको '# $ -N $ 2'' का अर्थ समझाने की आवश्यकता है। यदि आपकी स्क्रिप्ट एक बोर्न शेल स्क्रिप्ट है तो यह एक टिप्पणी है (यह '#' से शुरू होती है) लेकिन आपको इसका मतलब कुछ और लगता है। – Celada

+0

मैंने पहले ही इसे समझाने की कोशिश की है, सप्तमस प्राइम को टिप्पणी देखें। इस विकल्प का उपयोग क्लस्टर पर्यावरण में नौकरी नाम सेट करने के लिए किया जाता है, उदा। देखें: http://www.clusterresources.com/torquedocs/commands/qsub.shtml। सच है, आमतौर पर # टिप्पणियों के लिए प्रयोग किया जाता है। लेकिन जब वाक्यविन्यास # $ -अर्ग्यूमेंट वैल्यू में उपयोग किया जाता है तब नहीं किया जाता है। धन्यवाद। – user1137731

+0

यदि प्रश्न qsub के लिए विशिष्ट शैल मेटासिंटेक्स से संबंधित है, तो आपको उस प्रश्न में उल्लेख किया जाना चाहिए था। वैसे भी, आपके द्वारा भेजा गया लिंक '# पीबीएस' निर्देश के बारे में बात करता है लेकिन इसमें '# $' का उल्लेख नहीं है, इसलिए मुझे अभी भी पता नहीं है कि इसका क्या अर्थ है। किसी भी मामले में, ऐसा लगता है कि उन 'qsub' निर्देशों का अर्थ 'qsub' द्वारा ही किया गया है ** ** स्क्रिप्ट चलाए जाने से पहले ** इसलिए यह समझ में आ जाएगा कि स्क्रिप्ट को पारित होने के बाद जो तर्क पारित किए जाते हैं, वे प्रवेश नहीं करते हैं ऐसे निर्देशों की प्रसंस्करण में। मुझे लगता है कि आपको नौकरी के नाम के लिए एक स्थिर स्ट्रिंग की आपूर्ति करनी होगी। – Celada

उत्तर

1

नहीं, तुम नहीं कर सकते हैं। लाइन की शुरुआत में # यह बनाता है कि $ 2 को स्क्रिप्ट के तर्क द्वारा प्रतिस्थापित नहीं किया जाएगा। जो करने का प्रयास कर रहे हैं वह करने का तरीका

qsub foo.sh -N <name> 
2

मेरे लिए मज़ेदार काम करता है।

मैं नहीं जानता कि क्या एन आदेश का मतलब है, लेकिन

#!/bin/bash -l 
#$ -S /bin/bash 
#$ -N $2 
echo $1 
echo $2 

जब sh foo.sh a b से बुलाया तुरंत गूँज

a 
b 
+0

आपके उत्तर के लिए धन्यवाद। लेकिन मैंने पहले ही उल्लेख किया है कि इको कमांड में गुजरने का तर्क ठीक काम करता है। हालांकि, दूसरे मामले में '# $ -N $ 2' $ 2 का मूल्यांकन 'बी' के रूप में नहीं किया जाता है।कुछ संदर्भ देने के लिए: यह सूर्य ग्रिड इंजन के लिए qsub स्क्रिप्ट है और '-N' विकल्प नौकरी का नाम सेट करता है। तो इस मामले में नौकरी '$ 2' के रूप में सेट की जाएगी और 'बी' के रूप में वांछित नहीं होगी। तो सामान्य सवाल यह है कि मैं '# $-SomParameterOption' $ 2 के पैरामीटर कैसे पास करूं? धन्यवाद। – user1137731

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