अनपेक्षित टोकन के पास बैश सिंटैक्स त्रुटि को ठीक करें
अनेक वस्तुओं का संग्रह / / May 30, 2022
लिनक्स बैश टर्मिनल में कोडिंग कोडिंग क्षेत्र में एक प्रमुख अभ्यास बन गया है। सॉफ्टवेयर इंजीनियर और कोडिंग भाषा सीखने वाले छात्रों को विभिन्न त्रुटियां आती हैं। यदि आपने अनपेक्षित टोकन '(' या बैश सिंटैक्स त्रुटि के पास सिंटैक्स त्रुटि जैसी त्रुटियां बार-बार देखी हैं अप्रत्याशित टोकन के पास, आप लेख में वर्णित विधियों पर भरोसा करने की कोशिश कर सकते हैं और एक कुशल बन सकते हैं कोडर। लेख में वर्णित विधियों को वर्णित क्रम में पढ़ें और अपनी फ़ाइल पर कमांड लाइन में त्रुटियों को ठीक करें।
अंतर्वस्तु
- अनपेक्षित टोकन के पास बैश सिंटैक्स त्रुटि को कैसे ठीक करें
- विधि 1: प्रत्येक कमांड लाइन में त्रुटियों को मैन्युअल रूप से ठीक करें
- चरण I: फ़ाइल की सामग्री पढ़ें
- चरण II: विंडोज लाइन ब्रेक हटाएं
- चरण III: नई बनाई गई फ़ाइल के लिए अनुमतियाँ सेट करें
- चरण IV: फ़ाइल में प्रारूप कोड
- विधि 2: कोड को फिर से लिखें
- विधि 3: Dos2unix.exe कमांड का उपयोग करें
अनपेक्षित टोकन के पास बैश सिंटैक्स त्रुटि को कैसे ठीक करें
लिनक्स बैश लिनक्स-आधारित सिस्टम के लिए एक कमांड-लाइन दुभाषिया है और बॉर्न शेल या श के लिए एक प्रतिस्थापन है। फ़ाइलों को Linux में .sh प्रारूप का उपयोग करके नाम दिया गया है
दे घुमा के पटकथा यदि शेल स्क्रिप्ट में कोड में स्वरूपण संबंधी समस्याएं हैं, तो आपको सिंटैक्स त्रुटि का सामना करना पड़ सकता है। अगर त्रुटि करीब है ( वर्ण, शेल आपको पंक्ति में त्रुटि के लिए संकेत देगा और त्रुटि को संबंधित पंक्ति में प्रदर्शित करेगा। चूंकि लिनक्स बैश एक दुभाषिया है, त्रुटि वाली लाइन आपको टर्मिनल में वापस कर दी जाएगी और यह स्क्रिप्ट में बाकी कमांड को स्कैन करना बंद कर देगी। इसलिए, आपको विशेष कमांड लाइन में त्रुटि को ठीक करने और शेल स्क्रिप्ट में अप्रत्याशित टोकन त्रुटि को ठीक करने के लिए आगे बढ़ने की आवश्यकता है। लिनक्स बैश में अनपेक्षित टोकन के पास सिंटैक्स त्रुटि के कारण इस खंड में नीचे सूचीबद्ध हैं:- एस्केप सीक्वेंस के साथ कोडिंग- यदि आपने बैश स्क्रिप्टिंग में कोड लिखे हैं, तो एस्केप सीक्वेंस या स्क्रिप्ट में उद्धरण चिह्न त्रुटियाँ पैदा कर सकते हैं। त्रुटि को ठीक करने के लिए एस्केप अनुक्रम और उद्धरण चिह्नों को सही प्रारूप में लिखा जाना चाहिए।
- कोडिंग फ़ाइल में गलत सिंटैक्स- कोड में सिंटैक्स सिंटैक्स त्रुटि दे सकता है यदि कमांड गलत सिंटैक्स में लिखा गया है जैसे कि लूप के क्रम को बदलना।
- कमांड का गलत इस्तेमाल- यदि आप गलत मान असाइनमेंट जैसे कमांड का सही उपयोग नहीं कर रहे हैं, तो आपको सिंटैक्स त्रुटि हो सकती है।
- सिस्टम में असंगत ओएस- यदि कोडिंग स्क्रिप्ट के लिए शेल यूनिक्स और डॉस सिस्टम के बीच संगत नहीं है, तो आपको एक अनपेक्षित त्रुटि हो सकती है।
- बैश शेल स्क्रिप्ट में समस्याएँ- किसी अन्य सिस्टम से कॉपी की गई फ़ाइल पर बैश शेल स्क्रिप्ट में चल रहे मुद्दे अप्रत्याशित टोकन त्रुटि दे सकते हैं।
नाम की एक फाइल पर विचार करें example.sh व्याख्यात्मक उद्देश्यों के लिए निम्नलिखित कमांड लाइनों के साथ लिनक्स बैश स्क्रिप्टिंग में बनाया गया है। उदाहरण फ़ाइल में सिंटैक्स त्रुटियों की संभावनाएं हैं और इसमें सभी संभावित कमांड शामिल हैं जिनका उपयोग शेल स्क्रिप्ट में किया जा सकता है।
str = 'स्क्रिप्ट में '(उदाहरण फ़ाइल)' की पहली कमांड लाइन'str= [(1,2),(3,4)]अगर [$ दिन == "सोम"] तो गूंज "सोम"वरना गूंज "नो मोन"फाई{0..2} में वेरिएबल के लिए; फिरइको कमांड 1 करें; इको कमांड 2; इको कमांड3; इको कमांड4; किया हुआजबकि सच; करो अगर [$ दिन == "सोम"]; फिर "सोम" गूंजें; और गूंज "सोम नहीं"; किया हुआ; फाई
विधि 1: प्रत्येक कमांड लाइन में त्रुटियों को मैन्युअल रूप से ठीक करें
त्रुटियों को ठीक करने का पहला तरीका स्क्रिप्ट में प्रत्येक कमांड लाइन में मैन्युअल रूप से सिंटैक्स त्रुटि को ठीक करना है। कमांड लाइन में अनपेक्षित टोकन के पास सिंटैक्स त्रुटियों को हल करने के चरणों पर इस खंड में चर्चा की गई है। टर्मिनल में अप्रत्याशित टोकन त्रुटि को ठीक करने की प्रक्रिया नीचे वर्णित है। में फ़ाइल चलाएँ टर्मिनल टाइप करके ./example.sh आदेश और दबाने प्रवेश करनाचाभी.
2. ध्यान दें पंक्तियां जिसके नीचे परिणाम पर कमांड लाइन में अप्रत्याशित टोकन त्रुटि है।
3. त्रुटि को ठीक करें प्रत्येक पंक्ति में व्यक्तिगत रूप से नीचे चर्चा की गई विधियों का पालन करके और सहेजा जा रहा है फ़ाइल।
4. दौड़ना परिवर्तनों के बाद फिर से फ़ाइल करें और जांचें कि फ़ाइल पर सिंटैक्स त्रुटि हल हो गई है या नहीं।
यह भी पढ़ें:विंडोज 10 पर लिनक्स बैश शेल कैसे स्थापित करें
चरण I: फ़ाइल की सामग्री पढ़ें
कमांड लाइन में सिंटैक्स त्रुटि को हल करने के लिए पहला कदम टर्मिनल में फ़ाइल को पढ़ना है। यदि फ़ाइल में समस्याएँ हैं, तो हो सकता है कि आप फ़ाइल को देखने में सक्षम न हों। फ़ाइल को देखने का नियमित अभ्यास कमांड का उपयोग करके फ़ाइल को चलाना है ./example.sh लेकिन आप फ़ाइल की सामग्री को संशोधित नहीं कर सकते। अनपेक्षित टोकन '(' के पास सिंटैक्स त्रुटि को ठीक करने के लिए फ़ाइल की सामग्री को देखने और कमांड लाइनों को संशोधित करने के विकल्पों पर नीचे चर्चा की गई है।
विकल्प 1: कैट कमांड के माध्यम से
पहला विकल्प का उपयोग करना है बिल्ली शेल स्क्रिप्ट में फ़ाइल देखने के लिए कमांड। कमांड टाइप करके कैट कमांड का उपयोग करके अनपेक्षित टोकन त्रुटि वाली फ़ाइल की सामग्री को पढ़ें कैट-वी example.sh टर्मिनल में।
नोट 1: example.sh व्याख्यात्मक उद्देश्यों के लिए उपयोग किया जाता है और आपको उस फ़ाइल का नाम टाइप करना होगा जिसमें अप्रत्याशित टोकन त्रुटि है।
नोट 2: कैट-वी कमांड का उपयोग उन सभी अदृश्य वर्णों को प्रदर्शित करने के लिए किया जाता है जो कैरिज रिटर्न या नो-ब्रेक स्पेस का प्रतिनिधित्व करने की संभावना रखते हैं।
विकल्प 2: वीएक्स कमांड के माध्यम से
यदि आप कैट कमांड का उपयोग नहीं कर सकते हैं, तो आप नीचे दिए गए चरण का उपयोग करके फ़ाइल पर कमांड को देखने और बदलने के लिए vx कमांड का उपयोग करने का प्रयास कर सकते हैं। लिखें श -vx ./example.sh फ़ाइल को खोलने के लिए टर्मिनल में कमांड।
विकल्प 3: ओडी-ए कमांड के माध्यम से
3. यदि कमांड लाइन में कुछ अदृश्य वर्ण हैं, तो आप फ़ाइल देखने के लिए od -a कमांड का उपयोग कर सकते हैं। यदि फ़ाइल की सामग्री कोड फ़ाइल में दिखाई नहीं दे रही है, तो आप कमांड का उपयोग करके फ़ाइल को पढ़ने का प्रयास कर सकते हैं ओडी-ए example.sh कोड को संशोधित करने के लिए।
चरण II: विंडोज लाइन ब्रेक हटाएं
यदि शेल स्क्रिप्ट में विंडोज लाइन ब्रेक हैं, तो आप लाइन ब्रेक को हटाने के लिए कंसोल कमांड का उपयोग कर सकते हैं और त्रुटि को ठीक करने के लिए कोड लाइनों को एक नई फाइल में कॉपी कर सकते हैं।
फ़ाइल में सामग्री को किसी अन्य नाम की फ़ाइल में सहेजने के लिए टर्मिनल में निम्न कमांड दर्ज करें सुधारे गए उदाहरण.शो स्क्रिप्ट में विंडोज लाइन ब्रेक को हटाने के लिए।
टीआर-डी '\r'सुधारे गए उदाहरण.शो
चरण III: नई बनाई गई फ़ाइल के लिए अनुमतियाँ सेट करें
फ़ाइल को संपादित करने के लिए आपको नई बनाई गई फ़ाइल को अनुमति सेट करने की आवश्यकता है ताकि फ़ाइल को शेल में निष्पादित किया जा सके। कमांड टाइप करें chmod 755 सही किया गयाexample.sh फ़ाइल को अनुमति प्रदान करने और फ़ाइल को चलाने के लिए टर्मिनल में। अब आप सही की गई फ़ाइल को देख सकते हैं और स्वरूपण संबंधी समस्याओं को ठीक कर सकते हैं और फ़ाइल में अनपेक्षित टोकन '(' के पास सिंटैक्स त्रुटि को ठीक कर सकते हैं।
चरण IV: फ़ाइल में प्रारूप कोड
दूसरा चरण कोड लाइनों को व्यक्तिगत रूप से प्रारूपित करना और फ़ाइल पर मैन्युअल रूप से कमांड लाइनों को बदलना है। अनपेक्षित टोकन '(' के पास सिंटैक्स त्रुटि को ठीक करने के लिए फ़ाइल को प्रारूपित करने के विकल्पों पर इस खंड में नीचे चर्चा की गई है।
विकल्प 1: सिंगल कोट्स को डबल कोट्स से बदलें
यदि आप कमांड लाइन में सिंगल कोट्स का उपयोग कर रहे हैं, तो आपको सिंटैक्स त्रुटि को ठीक करने के लिए सिंगल कोट्स को डबल कोट्स से बदलकर कमांड को बदलना होगा। में example.sh फ़ाइल, उन कोड लाइनों को हटा दें जिनमें ‘ तथा ’ या एकल कोट कमांड में, और सिंगल कोट्स को से बदलें डबल उद्धरण या “ तथा ’’. यहां, उदाहरण फ़ाइल में, आपको कोड को इस रूप में बदलना होगा str= "स्क्रिप्ट में "\(उदाहरण फ़ाइल)\" की पहली कमांड लाइन"
टिप्पणी: पैरामीटर प्रकार कमांड के लिए दोहरे उद्धरण आवश्यक हैं जैसे str = "[(1,2), (3,4)]".
यह भी पढ़ें:2022 के 20 सर्वश्रेष्ठ लाइटवेट लिनक्स डिस्ट्रोस
विकल्प 2: स्ट्रिंग लाइन्स में $ जोड़ें
यदि आपने स्क्रिप्ट में स्ट्रिंग मान जोड़े हैं, तो आपको स्क्रिप्ट में सिंटैक्स त्रुटि को ठीक करने के लिए स्ट्रिंग मानों में $ जोड़ना होगा। जोड़ें $ के साथ कमांड लाइन के लिए डोरी अनपेक्षित त्रुटि को ठीक करने के लिए मान। यहां, उदाहरण फ़ाइल में, कमांड लाइन को इस प्रकार बदलें;
str= $ 'स्क्रिप्ट में '\(उदाहरण फ़ाइल)\' की पहली कमांड लाइन'
टिप्पणी: यदि आप का उपयोग कर रहे हैं $ स्ट्रिंग मान में, आप बैकस्लैश एस्केप अनुक्रम को बायपास कर सकते हैं क्योंकि कमांड लाइन एएनएसआई सी मानक द्वारा डीकोड की जाती हैं। दूसरे शब्दों में, स्ट्रिंग मान के लिए $ का उपयोग करके, आप कमांड लाइन में सिंगल कोट्स के बजाय डबल कोट्स का उपयोग करने से बच सकते हैं।
विकल्प 3: Tabs को Spaces में बदलें
कमांड में दो कथनों के बीच आपके द्वारा छोड़े गए रिक्त स्थान को स्क्रिप्ट में सिंटैक्स त्रुटि को ठीक करने के लिए टैब के बजाय रिक्त स्थान होना चाहिए। यदि आपको सिगविन पर त्रुटि मिल रही है, तो आप त्रुटि को ठीक करने के लिए कोड में टैब को रिक्त स्थान में बदलने का प्रयास कर सकते हैं। कमांड लाइन नीचे दी गई है;
इको कमांड 1 करें; इको कमांड 2; इको कमांड3; इको कमांड4; किया हुआ
त्रुटि को ठीक करने के लिए उपरोक्त कमांड को नीचे दिखाए अनुसार फिर से लिखा जाना चाहिए।
इको कमांड 1 करें; इको कमांड 2; इको कमांड3; इको कमांड4; किया हुआ
विकल्प 4: एस्केप कैरेक्टर का उपयोग करें
यदि आप बैश कैरेक्टर का उपयोग कर रहे हैं, तो सिंटैक्स त्रुटि को ठीक करने के लिए बैश कैरेक्टर के साथ एस्केप कैरेक्टर का उपयोग करना महत्वपूर्ण है। कोष्टक या () फ़ाइल में बैश विशेष वर्ण हैं, इसलिए, आपको एस्केप वर्ण या का उपयोग करने की आवश्यकता होगी बैकस्लैश कमांड को निष्पादित करने के लिए सामान्य वर्णों से बचने के लिए कमांड लाइन में। str= 'स्क्रिप्ट में \'(उदाहरण फ़ाइल)\' की पहली कमांड लाइन' कमांड टर्मिनल में कोई त्रुटि नहीं देगा क्योंकि एस्केप कैरेक्टर का उपयोग किया जाता है।
यह भी पढ़ें: लिनक्स पर हमारे बीच कैसे आएं?
विकल्प 5: वर्णों के बीच रिक्त स्थान का उपयोग करें
शेल स्क्रिप्ट डिफ़ॉल्ट मानों द्वारा स्क्रिप्ट में कमांड और स्टेटमेंट को पहचानती है। आपको वर्णों के बीच रिक्त स्थान का उचित उपयोग सुनिश्चित करने की आवश्यकता है ताकि शेल स्क्रिप्ट में दिए गए कमांड की पहचान कर सके। स्पेस एक ऐसा कैरेक्टर है जिसका इस्तेमाल कमांड लाइन में दो कैरेक्टर्स को अलग करने के लिए किया जाता है। कोड में, के बीच कोई स्थान नहीं है यदि तथा [, जो अनपेक्षित टोकन त्रुटि देता है यदि[ शेल द्वारा कमांड की पहचान नहीं की जाती है। यदि कोड को बदल दिया जाता है अगर [$ दिन == "सोम"]; तब त्रुटि को शेल बुलेटिन कमांड के रूप में हल किया जा सकता है यदि खोल से पहचाना जाता है।
विकल्प 6: स्टेटमेंट के लिए कमांड सेपरेटर का उपयोग करें
शेल स्क्रिप्ट में विभिन्न कमांड को अलग-अलग कमांड की पहचान करने के लिए टर्मिनल के लिए स्टेटमेंट में अलग करने की आवश्यकता होती है। लिनक्स बैश में सिंटैक्स त्रुटि को ठीक करने के लिए आपको कमांड सेपरेटर का उपयोग करने की आवश्यकता है। कमांड में स्टेटमेंट को कमांड सेपरेटर जैसे अर्धविराम या a. द्वारा अलग करने की आवश्यकता होती है ; या दबाकर एक नई लाइन प्रवेश करना चाभी। उदाहरण के लिए, कोड में कमांड अगर [$ दिन == "सोम"] तो के रूप में बदलना होगा अगर [$ दिन == "सोम"]; फिर त्रुटि को ठीक करने के लिए। चूंकि अर्धविराम का उपयोग वर्णों के बीच कमांड विभाजक के रूप में किया जाता है [ तथा फिर, आप इस त्रुटि को ठीक कर सकते हैं।
विकल्प 7: अतिरिक्त विवरण हटाएं
कभी-कभी, आपने अतिरिक्त कथन जोड़े होंगे या एकाधिक नेस्टेड लूप के मामले में कोड मिश्रित हो सकते हैं। लिनक्स बैश में अप्रत्याशित टोकन '(' के पास सिंटेक्स त्रुटि को ठीक करने के लिए आपको कमांड लाइन पर अतिरिक्त बयानों को हटाने की जरूरत है। बैश लूप्स के लिए... किया या और निर्माणात्मक निर्माण अगर… फाई सही सिंटैक्स में होना चाहिए। उदाहरण फ़ाइल में गलत सिंटैक्स है के लिये लूप में टर्म है फिर जिसका उपयोग में किया जाता है यदि बयान। कोड को निम्न कोड के रूप में संशोधित करने से अनपेक्षित टोकन त्रुटि ठीक हो जाएगी। कथन फिर कोड में एक अतिरिक्त कथन है और शब्द को हटाने से त्रुटि ठीक हो जाएगी।
{0..2} में वेरिएबल के लिए; इको कमांड 1 करें; इको कमांड 2; इको कमांड3; इको कमांड4; किया हुआ
विकल्प 8: सुनिश्चित करें कि वक्तव्यों को बंद करने का आदेश सही है
यदि आप शेल स्क्रिप्ट में कई नेस्टेड या सशर्त निर्माण विवरण का उपयोग कर रहे हैं, तो आपको यह सुनिश्चित करना होगा कि लूप खोले जाने के क्रम में बंद हैं। लूप के साथ टकराव से बचने के लिए आप एक नई लाइन विभाजक का उपयोग कर सकते हैं। नेस्टेड लूप और सशर्त बयानों को बंद करने का क्रम सही होना चाहिए और इसे बदला नहीं जाना चाहिए। कोड में लूप जबकि सच; करो अगर [$ दिन == "सोम"]; फिर "सोम" गूंजें; और गूंज "सोम नहीं"; किया हुआ; फाई सही क्रम में बंद करने की जरूरत है। जैसा कि नीचे दिखाया गया है, कोड को बदलने से अप्रत्याशित टोकन त्रुटि ठीक हो सकती है क्योंकि स्टेटमेंट को बंद करने का क्रम सही हो गया है।
जबकि सच; करो अगर [$ दिन == "सोम"]; फिर "सोम" गूंजें; और गूंज "सोम नहीं"; फाई; किया हुआ
यह भी पढ़ें:कमांड लाइन दुभाषिया क्या है?
विधि 2: कोड को फिर से लिखें
यदि आपने कोड की प्रतिलिपि बनाई है और इसे टर्मिनल पर एक नई फ़ाइल में चिपकाया है, तो आप त्रुटि को ठीक करने के लिए कोड को मैन्युअल रूप से फिर से लिखने का प्रयास कर सकते हैं। कोड में त्रुटियों को ठीक किया जा सकता है यदि आपने शेल स्क्रिप्ट में बिना किसी प्रारूप त्रुटियों के कोड लिखा है। ऐसा इसलिए है क्योंकि माइक्रोसॉफ्ट वर्ड जैसे टेक्स्ट एडिटर में छिपे हुए कैरेक्टर और फ़ॉर्मेटिंग के मुद्दे, हो सकता है कि आपने कोड को कॉपी और पेस्ट करने के लिए इस्तेमाल किया हो।
विधि 3: Dos2unix.exe कमांड का उपयोग करें
यदि आप यूनिक्स ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं, तो आप लाइन फीड कैरेक्टर के साथ कोड लिख सकते हैं: \एन फ़ाइल में अगली पंक्ति में जाने के लिए। हालांकि, यदि आप विंडोज ओएस का उपयोग कर रहे हैं, तो आपको कैरिज रिटर्न और लाइन फीड का उपयोग करके कोड में अगली पंक्ति में जाने की जरूरत है। \r\n फ़ाइल में। यदि आप सिगविन में विंडोज ओएस में लिखे गए कोड को निष्पादित करते हैं, तो आपको अनपेक्षित टोकन के पास सिंटेक्स त्रुटि मिल सकती है '('।
त्रुटि को ठीक करने के लिए, आपको का उपयोग करके कैरिज रिटर्न वर्णों को साफ़ करना होगा डॉस टू यूनिक्स टेक्स्ट फ़ाइल स्वरूप कनवर्टर के रूप में कमांड लाइन टूल। निम्न आदेश टाइप करें: dos2unix.exe example.sh टर्मिनल में और आप फ़ाइल को यूनिक्स प्रारूप में परिवर्तित कर सकते हैं।
अनुशंसित:
- एंड्रॉइड पर टेलीग्राम अकाउंट कैसे बनाएं
- Windows 10 पर रनटाइम त्रुटि C++ को ठीक करें
- जीथब अकाउंट को स्थायी रूप से कैसे हटाएं
- Linux के लिए शीर्ष 14 सर्वश्रेष्ठ ग्राफ़िक्स कार्ड
लेख में ठीक करने के बुनियादी तरीकों पर चर्चा की गई है अनपेक्षित टोकन के पास बैश सिंटैक्स त्रुटि‘(’ स्क्रिप्ट में। यदि आप लिनक्स बैश का उपयोग कर रहे हैं, तो आप अप्रत्याशित टोकन के पास बैश सिंटैक्स त्रुटि को ठीक करने के लिए इस खंड में बताई गई विधियों का उपयोग कर सकते हैं। यदि आपने पूरा लेख पढ़ा है और सामग्री को उपयोगी पाया है, तो कृपया हमें अपने सुझाव और प्रश्न टिप्पणी अनुभाग में बताएं।