बैश में उद्धरणों के अंदर डॉलर साइन प्रक्षेप


9

मैं लिखी गई इस छोटी सी परीक्षा की स्क्रिप्ट को चला रहा हूं:

#!/bin/bash

TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest

कमांड लाइन से:

./test.sh "1092$212"

लेकिन डॉलर का चिन्ह छीना जा रहा है। अगर मैं इससे बचता हूं तो यह काम करता है। लेकिन मैंने सोचा कि दोहरे उद्धरण मुझे ऐसा करने की आवश्यकता से बचाएंगे। क्या कोई मुझे यह समझने में मदद कर सकता है कि क्या चल रहा है और इसे कैसे ठीक किया जाए?


समस्या यह है कि यह अस्पष्ट है - यहां तक ​​कि मेरे लिए एक मानव के रूप में - आप यहां क्या चाहते हैं, इसलिए कंप्यूटर के पास कोई मौका नहीं है। शायद बैश दुभाषिया $ 212 प्राप्त करने की कोशिश कर रहा है। यदि आप एक चर का विस्तार करने की कोशिश करते हैं जो मौजूद नहीं है, तो बैश चुपचाप विफल हो जाता है, इस प्रकार $ छीन लिया जाता है। कोष्ठक के अंदर अपने चरों को लपेटने पर विचार करें, जैसे "1092 $ {2} 12"
ब्रायन पीटरसन

जवाबों:


18

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


धन्यवाद। यह काम। क्या इसका कोई कारण है?
अमीर अफगानी

8
हाँ। इसे इस तरह से डिजाइन किया गया था! यह वास्तव में एक उद्धृत स्ट्रिंग के अंदर चर का विस्तार करने में सक्षम होने के लिए काफी उपयोगी है। यह एक विशेषता है। यदि आप व्यवहार नहीं चाहते हैं, तो एकल उद्धरणों का उपयोग करें, यही उनके लिए डिज़ाइन किया गया है।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.