2015-11-05 12 views
6

उद्धरण बनाए रखें मैं अपनी स्क्रिप्ट पर भेजे गए पैरामीटर का पुन: उपयोग करने का प्रयास कर रहा हूं क्योंकि मैं को मेरी स्क्रिप्ट के तहत निष्पादित करता हूं। नीचे उदाहरण देखें जहां मैं mailx निष्पादित करता हूं। mailx -s My Quoted Argument:पास स्क्रिप्ट स्क्रिप्ट के लिए उद्धृत उद्धरण पास करें और

बैश

$./myscript.sh "My quoted Argument" 

myscript.sh

mailx -s $1 

यह समाप्त होता है के रूप में क्रियान्वित किया जा रहा।


  • मैं "$1" कोशिश की, लेकिन मेरी उद्धरण फेंक दिया जाता है। (गलत विवरण, नीचे उत्तर पढ़ें)
  • मैंने ""$1"" की कोशिश की लेकिन मेरे उद्धरण फेंक दिए गए।
  • मैंने '$1' करने की कोशिश की लेकिन यह मजबूत उद्धरण है इसलिए $ 1 का कभी भी व्याख्या नहीं किया जाता है।
  • मुझे एहसास है कि मैं [email protected] कर सकता हूं, लेकिन यह मुझे हर परम देता है।
  • .... आप चित्र

किसी भी मदद की सराहना की जाएगी प्राप्त करें!

उत्तर

8

mailx -s "$1" की तरह तर्क गुजर प्रयास कर सकते हैं सही ढंग से के रूप में किया जाता है, एम्बेडेड रिक्त स्थान है और सभी mailx को $1 का मूल्य गुजरता है।

हाथ में मामले में, इसका मतलब है कि My Quoted Argument एक एकल, mailx को शाब्दिक तर्क है, जो शायद अपनी मंशा है के रूप में पारित कर दिया है।

एक शेल कमांड लाइन में, स्ट्रिंग के आसपास उद्धरण शाब्दिक वाक्यात्मक तत्वों तर्क सीमाओं कि कमांड लाइन (एक प्रक्रिया quote removal कहा जाता है) को पार्स करने की प्रक्रिया में खोल द्वारा हटा दिया जाता Demarcating हैं।

  • या तो: उद्धरण एम्बेड: मंगलाचरण ./myscript.sh "\"My quoted Argument\""
  • या पर उद्धरण एम्बेड

    तुम सच में एम्बेडेड डबल उद्धरण (जो असामान्य होगा) पारित करने के लिए चाहते हैं तो आपके पास 2 विकल्प हैं myscript.sh अंदर: mailx -s "\"$1\""

+1

धन्यवाद @ mklement0। किसी भी तरह से मेरे परीक्षण में, मैंने इसे 'mailx' पर पास करते समय मेरी स्क्रिप्ट में तर्क उद्धृत करना अनदेखा कर दिया होगा। –

0

आप इस

$./myscript.sh \"My quoted Argument\"? 
+1

मैं तर्कों को पारित करने में सक्षम होना चाहता हूं क्योंकि मैं उस आदेश के आंतरिक कार्य को समझने के बिना किसी सामान्य आदेश के लिए चाहता हूं। अर्थात। स्क्रिप्ट डिज़ाइन की कमी के कारण मैं पैरामीटर को कैसे संशोधित करना चाहता हूं, यह संशोधित नहीं करना चाहता हूं। –

0

तुम सिर्फ अपनी स्क्रिप्ट में $1 चारों ओर भाग निकले उद्धरण डाल सकता है

+०१२३५१६४१०
mailx -s \"$1\" 
संबंधित मुद्दे