bash - कमांड को बैश वैरिएबल असाइनमेंट में त्रुटि नहीं मिली




shell variable-assignment (3)

आपके पास अपने '=' चिह्न के आस-पास की जगह नहीं हो सकती है।

जब आप लिखते हैं:

STR = "foo"

बैश 2 तर्कों के साथ एसटीआर नामक एक कमांड चलाने की कोशिश करता है (तार '=' और 'foo')

जब आप लिखते हैं:

STR =foo

बैश 1 तर्क के साथ एसटीआर नामक कमांड चलाने की कोशिश करता है (स्ट्रिंग '= foo')

जब आप लिखते हैं:

STR= foo

बैश अपने पर्यावरण में खाली स्ट्रिंग पर सेट एसटीआर सेट के साथ कमांड foo चलाने की कोशिश करता है।

मुझे यकीन नहीं है कि यह स्पष्ट करने में मदद करता है या यदि यह केवल अपमान है, लेकिन ध्यान दें कि:

  1. पहला आदेश बिल्कुल बराबर है: STR "=" "foo" ,
  2. दूसरा STR "=foo" जैसा ही है,
  3. और अंतिम STR="" foo बराबर है।

Sh भाषा spec का प्रासंगिक खंड , खंड 2.9.1 कहता है:

एक "सरल कमांड" वैकल्पिक चर असाइनमेंट और रीडायरेक्शन का अनुक्रम है, किसी अनुक्रम में, वैकल्पिक रूप से शब्दों और पुनर्निर्देशन के बाद, एक नियंत्रण ऑपरेटर द्वारा समाप्त किया जाता है।

उस संदर्भ में, एक word वह आदेश है जिसे बाश चलाने जा रहा है। किसी भी स्ट्रिंग युक्त = (स्ट्रिंग की शुरुआत के अलावा किसी भी स्थिति में) जो एक पुनर्निर्देशन नहीं है एक चरणीय असाइनमेंट है, जबकि कोई स्ट्रिंग जो पुनर्निर्देशन नहीं है और इसमें कोई नहीं है = एक कमांड है। STR = "foo" , STR एक परिवर्तनीय असाइनमेंट नहीं है।

मेरे पास test.sh नामक इस स्क्रिप्ट है:

#!/bin/bash
STR = "Hello World"
echo $STR

जब मैं sh test.sh हूं मुझे यह मिलता है:

test.sh: line 2: STR: command not found

मैं क्या गलत कर रहा हूं? मैं बेहद बुनियादी / शुरुआती बैश स्क्रिप्टिंग ट्यूटोरियल ऑनलाइन देखता हूं और इस प्रकार वे चर घोषित करने के लिए कहते हैं ... इसलिए मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं।

मैं उबंटू सर्वर 9 .10 पर हूं। और हाँ, बैश /bin/bash पर स्थित है।


इंटरैक्टिव मोड में सब ठीक दिखता है

$ str="Hello World"
$ echo $str
Hello World

जाहिर है ! जैसा कि जोहान्स ने कहा, '=' के आसपास कोई जगह नहीं है। यदि '=' के आस-पास कोई स्थान है तो इंटरैक्टिव मोड में यह त्रुटियों को `के रूप में देता है

कोई आदेश 'str' नहीं मिला


= चिह्न के चारों ओर रिक्त स्थान ड्रॉप करें:

#!/bin/bash 
STR="Hello World" 
echo $STR 




variable-assignment