2013-10-16 11 views
8

मुझे पता है कि आप "\" के साथ विशेष पात्रों से बच सकते हैं, लेकिन मैं कमांड बनाने में दिलचस्प हूं जो टर्मिनल पर जाएंगे जिसमें विशेष वर्ण शामिल होंगे, और ये बैकस्लाश को अच्छी तरह से नहीं पढ़ सकते हैं।क्या कोई अन्य भाषा ट्रिपल उद्धरण के बराबर है?

एक सरल उदाहरण के रूप में, मैं एक आदेश है कि लग रहा है करना चाहते हैं की तरह:

echo hello "w" or'l'd 

कौन सा

system(command="""echo hello "w" or'l'd""") 

लेकिन आर ट्रिपल कोट्स प्रबंधन नहीं करती है की तरह कुछ द्वारा प्राप्त किया जा सकता है । क्या कोई और तरीका है? बिल्ली() से आउटपुट को पकड़ना भी ठीक रहेगा। जैसे newCommand = बिल्ली ("echo हैलो \" w \ "orld")

धन्यवाद।

+0

उह, स्ट्रिंग के लिए एक एकल उद्धरण जोड़कर आप इसे कठिन बना दिया है और अवैध @ flodel के जवाब (जो आपके प्रश्न के प्रारंभिक संस्करण के लिए सही था) ... –

+0

यह सिर्फ बैकस्लैश का उपयोग कर की तुलना में कठिन (है जैसा कि नीचे बताया गया है, वास्तव में स्ट्रिंग में आंतरिक रूप से शामिल नहीं किया गया है, केवल आर के मुद्रित प्रतिनिधित्व में, और इसलिए शायद वे समस्याग्रस्त नहीं हैं जैसा कि आप सोचते हैं), लेकिन 'डिप्टी (विकल्प ('हैलो हैलो" डब्ल्यू " या 'एल' डी')) '' काम करता है ... –

उत्तर

7

आप \" साथ " बच सकते हैं। यदि आपका इरादा सिस्टम कमांड चलाने के लिए है तो मैं shQuote का भी उपयोग करूंगा। यह प्रासंगिक आप के लिए भागने का ख्याल रखता है ...

shQuote("hello \"w\" orld" , type = "cmd") 
#[1] "\"hello \\\"w\\\" orld\"" 

आप जानते हैं कि क्या आप ऑन-स्क्रीन आर दुभाषिया में देखते हैं वास्तव में नहीं है क्या खोल देखेंगे होना चाहिए .. जैसे

paste0("echo " , shQuote("hello \"w\" orld" , type = "sh")) 
#[1] "echo 'hello \"w\" orld'" 

system(paste0("echo " , shQuote("hello \"w\" orld" , type = "sh"))) 
#hello "w" orld 
+1

मुझे लगता है कि 'shQuote' का उपयोग करने के लिए आपको करना होगा:' system (command = paste0 ("echo", shQuote ("हैलो \" w \ "orld ", टाइप =" cmd ")))'। अगर मैं सही ढंग से समझता हूं, तो 'shQuote' एक कमांड के बिना, कमांड को पारित स्ट्रिंग्स के लिए होता है। – juba

+0

@ जुबा धन्यवाद, आप बिल्कुल सही हैं। मैंने उस प्रभाव को अपडेट किया। चियर्स –

3

आप एकल उद्धरण चिह्नों का उपयोग कर सकते हैं:

system(command='echo hello "w" orld') 
संबंधित मुद्दे