"STR: कमांड नहीं मिला" एक वैरिएबल के लिए एक मान निर्दिष्ट करते समय


9

मैंने "टेस्ट.श" नामक एक शेल स्क्रिप्ट में निम्नलिखित लाइनें दर्ज कीं:

#!/bin/bash
echo Hello World
STR=”Hello Again
echo $STR

निष्पादन योग्य होने के बाद, मैंने स्क्रिप्ट को चलाया ./test.sh। हालांकि, मुझे संदेश मिलता है

./test.sh: line 3  STR: Command not found

मैं क्या गलत कर रहा हूं?


1
क्या टेरडॉन के उत्तर ने आपके प्रश्न को हल किया? यदि ऐसा नहीं हो सकता है कि आप गलती से अपने चर असाइनमेंट के आसपास रिक्त स्थान है।
आर्कटिक

@ मेरे सुझाव के आधार पर सिर्फ एक शैलीगत टिप्पणी : मुझे लगता है कि कोड ब्लॉक के बजाय त्रुटि संदेशों के लिए ब्लॉकक्वाट का उपयोग करना सबसे अच्छा है; अंत में, यह कोड नहीं है लेकिन कुछ टेक्स्ट बैश इंटरप्रेटर वापस आ रहा है।
फेडोरक्वी

@fedorqui क्यों? उद्धरण ब्लॉक स्वरूपण को संरक्षित नहीं करते हैं, वे विशेष वर्ण की व्याख्या (जैसे *, _, #) markdown के रूप में, और स्क्रीन रीडर सॉफ्टवेयर के द्वारा अलग ढंग से बनाए जाते हैं। मुझे लगता है कि कंप्यूटर द्वारा दिया गया या प्राप्त किया गया कुछ भी कोड ब्लॉक में होना चाहिए। आप कभी नहीं जानते कि सटीक प्रारूप कब प्रासंगिक हो सकता है। विशेष रूप से इस तरह की चीजों से निपटने के दौरान जहां यूनिकोड खेल में आता है।
टेराडॉन

@terdon यह वास्तव में मामलों पर निर्भर करता है और लॉग / चेतावनियों / त्रुटि संदेशों के लिए प्रारूप जोड़ने का भी अनुरोध है, जो वर्ड-रैपिंग और नए अक्षरों को संरक्षित करने की अनुमति देता है । मेरे लिए, अगर यह इस मामले की तरह सिर्फ एक पंक्ति है, तो मैं उद्धरण ब्लॉक पसंद करता हूं क्योंकि यह समझना आसान है कि कोड क्या है और त्रुटियां क्या हैं।
फेडोरक्वी

@fedorqui मुझे लगता है कि हमें इसे मेटा में ले जाना चाहिए लेकिन मैं हमेशा निश्चित-चौड़ाई वाले फ़ॉन्ट और सटीक प्रारूप को प्राथमिकता देता हूं जब भी कोई संदेश पोस्ट किया जाता है जो या तो पढ़ा जाता है या कंप्यूटर द्वारा उत्पादित होता है।
टेराडॉन

जवाबों:


20

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

$ uniprops '"' | head -1
U+0022 "› \N{QUOTATION MARK}

जबकि आपके हैं:

$ uniprops '”' | head -1
U+201D ‹”› \N{RIGHT DOUBLE QUOTATION MARK}

इसलिए, बस नियमित उद्धरणों का उपयोग करें और आप ठीक हो जाएंगे:

#!/bin/bash
echo Hello World
STR="Hello Again"
echo "$STR" ## Get into the habit of ALWAYS quoting your variables as well

उत्तर के लिए धन्यवाद Terdon। फ़ाइल के दोहरे उद्धरण सही हैं, पोस्ट एक ईमेल से थी।
जे सिल्वर

1
unipropsसुंदर दिखाई देता है। मुझे पृष्ठ मिला (क्या वह हमारी खुद की टिचरी है?)। क्या मुझे इसे स्रोत से डाउनलोड करना होगा, या यह कहीं पैकेज प्रबंधक में उपलब्ध है? E: Unable to locate package uniprops
१३:०४ पर टीआरजी

1
मैं पर्ल (बहुत मुश्किल से) का उपयोग नहीं करता। मैं यूनिकोड के बारे में न्यूनतम से अधिक जानना चाहता हूं ।
TRGG

1
@TRiG उबटन में अच्छी तरह से, यह उतना ही सरल है sudo apt-get install cpanminus; sudo cpanm Unicode::Tussleऔर फिर आपके पास unipropsकमांड है। बेशक, tchrist ने लानत भरी बात लिखी ताकि आप उससे चैट में पूछ सकें :)
terdon

1
मैं अफसोस के साथ हर समय इस तरह की बकवास में दौड़ता हूं। मेरे नियोक्ता में एक विशेष विकी प्रणाली से हाइफन-माइनस -U + 002D को हाइफन U + 2010 ( या इसी तरह ) में अनुवाद करने की एक बुरी आदत है । फिर uname ‐aकाम करना बंद कर दें: - /। ईमेल क्लाइंट में अक्सर इसी तरह की नापाक आदतें होती हैं - खासकर HTML फॉर्मेटिंग का उपयोग करते समय - सादा-पाठ ईमेल पसंद करने का एक और अच्छा कारण।
डिजिटल ट्रामा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.