पावर्सल में शाब्दिक बच चरित्र क्या है?


51

जब पॉवर्सशेल में एक उद्धृत स्ट्रिंग के अंदर एक शाब्दिक उद्धरण वर्ण शामिल है, तो मैं यह इंगित करने के लिए कि यह स्ट्रिंग स्ट्रिंगर के बजाय शाब्दिक है, उद्धरण वर्ण से कैसे बचूँ?

जवाबों:


75

से help about_quoting_rules

दोहरे-उद्धरण चिह्नों को एक स्ट्रिंग में प्रकट करने के लिए, पूरे स्ट्रिंग को एकल उद्धरण चिह्नों में संलग्न करें। उदाहरण के लिए:

'As they say, "live and learn."'

इस कमांड से आउटपुट है:

As they say, "live and learn."

आप एकल-उद्धृत स्ट्रिंग को दोहरे-उद्धृत स्ट्रिंग में संलग्न कर सकते हैं। उदाहरण के लिए:

"As they say, 'live and learn.'"

इस कमांड से आउटपुट है:

As they say, 'live and learn.'

Windows PowerShell को दोहरे उद्धरण चिह्न की शाब्दिक व्याख्या करने के लिए मजबूर करने के लिए, बैकटिक वर्ण का उपयोग करें। यह विंडोज़ पॉवरशेल को उद्धरण चिह्न की स्ट्रिंग स्ट्रिंग के रूप में व्याख्या करने से रोकता है। उदाहरण के लिए:

"Use a quotation mark (`") to begin a string."

इस कमांड से आउटपुट है:

Use a quotation mark (") to begin a string.

क्योंकि एकल-उद्धृत स्ट्रिंग्स की सामग्री की शाब्दिक रूप से व्याख्या की जाती है, आप एकल-उद्धृत स्ट्रिंग में शाब्दिक वर्ण व्याख्या को बाध्य करने के लिए बैकटिक वर्ण का उपयोग नहीं कर सकते।

सिंगल कोटेड स्ट्रिंग्स में अन्य उद्धरण चिह्नों से बचने के लिए बैकटिक कैरेक्टर का उपयोग पॉवरशेल के हाल के संस्करणों में समर्थित नहीं है। पॉवरशेल के पहले के संस्करणों में बैकटिक एस्केप कैरेक्टर का उपयोग एकल डिटेल्ड स्ट्रिंग के भीतर डबल कोटेशन मार्क कैरेक्टर से बचने के लिए किया जा सकता है, जो help about_quotingडॉक्यूमेंट में विस्तृत रूप से पॉवरशेल के उन संस्करणों में उपलब्ध है।


2
बस एक नोट, लेकिन ऐसा प्रतीत होता है जैसे आप एकल-उद्धरणों से बच नहीं सकते हैं आपका अंतिम उदाहरण मान्य नहीं है। हो सकता है कि आपके पोस्ट के बाद से कुछ बदल गया हो, क्योंकि मुझे वह about_quotingमदद नहीं मिल रही है । चलित शक्तियां v5.1। दोहरे उद्धरण-चिह्नों से बचना, या विभिन्न प्रकार के उद्धरण अभी भी अपेक्षा के अनुरूप काम करते हैं।
काल जेकडोर

1
दिलचस्प है - ऐसा प्रतीत होता है कि एकल-उद्धरण से बचने के लिए समर्थन एक बग था। About_quoting हेल्प फ़ाइल को about_quoting_rules द्वारा बदल दिया गया है और यह स्पष्ट रूप से कहता है कि आप PowerShell v5 में सिंगल कोट्स से बचने के लिए एक बैकटिक का उपयोग नहीं कर सकते क्योंकि सिंगल कोटेड स्ट्रिंग्स शाब्दिक हैं। अच्छी पकड़, यह V3 में अलग था।
हेल्विक

1
ध्यान दें कि एकल उद्धरणों को एकल-उद्धृत स्ट्रिंग्स में दोगुना करके बचाया जाता है, जैसे कि एसक्यूएल में। इस प्रकार 'As they say, ''live and learn.'''आउटपुट As they say, 'live and learn.', आपके दूसरे उदाहरण के समान है।
बैरनरी

13

पॉवर्सशेल में एस्केप कैरेक्टर "` "(बैकवर्ड एपोस्ट्रोफ / ग्रेव) है।

इसका उपयोग उद्धरणों और विशेष वर्णों (जैसे, टैब `t) से बचने के लिए किया जा सकता है।


2
यह शायद bashउपयोगकर्ताओं को पागल कर देगा। ( cmd.exeभागने का पात्र है ^)
ग्रेविटी

2
वैसे, अगर आप स्क्विंट करते हैं तो यह बैकस्लैश की तरह दिखता है।
koenigdmj

10

जो पहले से ही यहां प्रदान किया गया है, उसकी प्रशंसा करने के लिए, आपको यह भी पता होना चाहिए कि आप स्वयं उद्धरण के साथ एक उद्धरण (सिंगल या डबल) से बच सकते हैं। इसका मतलब है कि आप यह कर सकते हैं:

"यहां" "डबल-उद्धृत स्ट्रिंग" "का एक उदाहरण है।"

और इस:

'इस बार यह' 'एकल-उद्धृत' 'है।'

यह सिंटैक्स जो लाभ प्रदान करता है वह सरल है: एक बैक्टिक के साथ एक उद्धरण से बचने के लिए एक ही उद्धरण को दो बार टाइप करना आसान है।


1

एकल 'पाठ' इसलिए इसे शाब्दिक पाठ माना जाता है, फिर "" का उपयोग करके किसी विशेष वर्ण से बच जाएं

उदा। इस स्ट्रिंग: "जैसा कि वे कहते हैं," जीओ और सीखो। "" यह स्ट्रिंग बन जाता है 'जैसा कि वे कहते हैं, \ "जीना और सीखना। \"।


1
PowerShell में नहीं, यह नहीं है। PS C: \ WINDOWS \ system32> लिखें-होस्ट 'जैसा कि वे कहते हैं, \ "जीना और सीखना। \"' जैसा कि वे कहते हैं, \ "जीना और सीखना। \"
हॉपलेसएनबीबी

1
@ HopelessN00b शायद बहुत कठोर रूप से न्याय नहीं करते हैं - यह काम करता है यदि आप PowerShell.exe -Commandपैरामीटर में दोहरे उद्धरण चिह्नों का उपयोग कर रहे हैं (और, तकनीकी रूप से, यह CMD इसे से बच रहा है, लेकिन कमांड पैरामीटर में मान्य है)। imgur.com/1btjoQW
jparnell8839
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.