त्रुटि संदेश अनपेक्षित टोकन के निकट सिंटैक्स त्रुटि `(' यूनिक्स-प्रकार के वातावरण, सिगविन और विंडोज़ में कमांड-लाइन इंटरफ़ेस में होता है। यह त्रुटि सबसे अधिक तब ट्रिगर होगी जब आप एक शेल स्क्रिप्ट को चलाने का प्रयास करेंगे जिसे संपादित किया गया था या पुराने डॉस/विंडोज या मैक सिस्टम में बनाया गया था।
यह त्रुटि संदेश तब भी सामने आता है जब आप लिनक्स कमांड लाइन में रोजमर्रा के कार्यों के लिए कमांड दर्ज कर रहे होते हैं जैसे कि फाइलों को मैन्युअल रूप से कॉपी करना आदि। यह त्रुटि संदेश होने का मुख्य कारण या तो खराब सिंटैक्स या किसी अन्य सिस्टम के कमांड की व्याख्या करने में ओएस की समस्या है। खोल।
अनपेक्षित टोकन के निकट सिंटैक्स त्रुटि का क्या कारण है `('?
इस त्रुटि संदेश के कारण बहुत विविध हैं और उन्हें एक लेख में सूचीबद्ध नहीं किया जा सकता है क्योंकि कमांड निष्पादित करते समय सिंटैक्स के गलत होने की हजारों संभावनाएं हैं। इस त्रुटि के मुख्य कारण हैं:
- खराब सिंटैक्स किसी भी प्लेटफॉर्म में किसी भी कमांड को निष्पादित करते समय। या तो आप कमांड का सही उपयोग नहीं कर रहे हैं या गलत सिंटैक्स दर्ज किया है।
- खोल संगत नहीं है यूनिक्स/डॉस सिस्टम के बीच।
- बैश शेल स्क्रिप्ट को दूसरे स्रोत से चलाने में समस्याएं आ रही हैं ।
इस लेख में, हम मानते हैं कि आप कोडिंग की मूल बातें जानते हैं और आपको पता है कि आप क्या कर रहे हैं। यदि आप एक नौसिखिया हैं, तो यह सबसे अच्छा है कि आप उस भाषा/आदेश के गहन ट्यूटोरियल का पालन करें जिसे आप निष्पादित करने का प्रयास कर रहे हैं। आपने शायद कुछ वाक्य रचना की गलती की है।
समाधान 1:सिंटैक्स और आदेशों के प्रारूप की जांच करना
आपको इस त्रुटि संदेश का अनुभव होने का पहला और सबसे महत्वपूर्ण कारण यह है कि आपके कोड में खराब सिंटैक्स है या आप कमांड के सटीक प्रारूप का पालन नहीं कर रहे हैं। प्रत्येक कमांड का एक पूर्वनिर्धारित प्रारूप होता है जिसे आप इसके प्रलेखन में देख सकते हैं। कई पैरामीटर वैकल्पिक हैं जो अन्य अनिवार्य हैं।
इसके अलावा, अतिरिक्त स्थान . के लिए अतिरिक्त सावधानी बरती जानी चाहिए , दोहरे उद्धरणों . का उपयोग , और अनिवार्य आवश्यक पैरामीटर। यदि उनमें से कोई गायब है या गलत घोषित किया गया है, तो आप अपना कोड निष्पादित नहीं कर पाएंगे।
उदाहरण के लिए, निम्न कोड के बजाय
[mycom7] # ./ctopo.sh um_test1 [(1,2),(2,1)]
आपको इसे
. के रूप में निष्पादित करने की आवश्यकता है[mycom7] # ./ctopo.sh um_test1 "[(1,2),(2,1)]"
साथ ही, सुनिश्चित करें कि आप अपनी कमांड/शेल स्क्रिप्ट को सही ढंग से निष्पादित कर रहे हैं यदि यह कई पंक्तियों में फैली हुई है।
पैरामीटर प्रकार के कारण, डबल कोट्स आवश्यक हैं। एक अतिरिक्त स्थान आपके कोड को बर्बाद कर सकता है और त्रुटि संदेश को बाध्य कर सकता है। सुनिश्चित करें कि आप आधिकारिक दस्तावेज . की जांच कर रहे हैं आप जिस कमांड को निष्पादित कर रहे हैं और देखें कि क्या वहां कोई समस्या है।
समाधान 2:आपकी शेल स्क्रिप्ट का समस्या निवारण
यदि एक शेल स्क्रिप्ट का उपयोग कर रहे हैं जो स्रोत सिस्टम में काम करती है लेकिन लक्ष्य में एक त्रुटि देता है, तो आप निष्पादन के दौरान संग्रहीत चर की जांच करके स्क्रिप्ट का समस्या निवारण कर सकते हैं और फिर देख सकते हैं कि समस्या क्या है। यह एक बहुत ही सामान्य कारण है क्योंकि कई मामलों में, शेल एक अमुद्रणीय चरित्र की व्याख्या करने की कोशिश करता है।
शेल को 'vx' के पैरामीटर के साथ चलाने का प्रयास करें। यह हमें दिखाएगा कि कौन से कमांड चलाए जा रहे हैं और स्क्रिप्ट में कौन से मान संग्रहीत हैं। यहां के माध्यम से आप समस्या निवारण और निदान कर सकते हैं कि क्या गलत हो रहा है।
उदाहरण के लिए, 'vx' को इस रूप में शामिल करने के बाद टर्मिनल में स्क्रिप्ट निष्पादित करें:
# sh -vx ./test_script5.sh
आप 'कैट' कमांड का उपयोग करके स्क्रिप्ट की सामग्री की जांच कर सकते हैं:
# cat test_script5.sh
समाधान 3:'dos2unix.exe' कमांड का उपयोग करना
विंडोज़/डॉस टेक्स्ट फाइलों में, एक नई लाइन कैरिज रिटर्न (\r) का एक संयोजन है जिसके बाद एक लाइन फीड (\n) होती है। Mac में (Mac OS X से पहले), एक लाइन ब्रेक में एक साधारण कैरिज रिटर्न (\r) का उपयोग किया जाता था। यूनिक्स/लिनक्स और मैक ओएस एक्स लाइन फीड (\n) लाइन ब्रेक का उपयोग करते हैं। यदि आप सिगविन का उपयोग कर रहे हैं, तो यह अतिरिक्त कैरिज रिटर्न (\r) वर्ण के कारण डॉस/विंडोज और पुराने मैक द्वारा बनाई गई स्क्रिप्ट को संसाधित करने में विफल हो जाएगा।
यहां आप 'dos2unix.exe' कमांड बना सकते हैं जो स्क्रिप्ट को सही फॉर्मेट में बदल देगा और फिर आप इसे बिना किसी समस्या के निष्पादित कर सकते हैं।
निष्कर्ष निकालने के लिए, आपको अपने आदेशों और आपके द्वारा उपयोग किए जा रहे प्लेटफ़ॉर्म के प्रकार पर शोध करने की आवश्यकता है और सुनिश्चित करें कि कोई विसंगतियां नहीं हैं। चूंकि हम हर संभावना को कवर नहीं कर सकते हैं, इसलिए आपको अंदाजा होगा कि किस प्रकार की त्रुटियां हो सकती हैं और उन्हें कैसे ठीक किया जाए।