გამოასწორეთ Bash სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს
Miscellanea / / May 30, 2022
Linux Bash ტერმინალში კოდირება კოდირების სექტორში გაბატონებულ პრაქტიკად იქცა. პროგრამული უზრუნველყოფის ინჟინრები და სტუდენტები, რომლებიც სწავლობენ კოდირების ენას, ხვდებიან სხვადასხვა შეცდომებს. თუ არაერთხელ გინახავთ შეცდომები, როგორიცაა სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს „(“ ან Bash სინტაქსური შეცდომა მოულოდნელ ჟეტონთან ახლოს, შეგიძლიათ სცადოთ დაეყრდნოთ სტატიაში აღწერილ მეთოდებს და გახდეთ გამოცდილი კოდირებელი. წაიკითხეთ სტატიაში აღწერილი მეთოდები აღწერილი თანმიმდევრობით და შეასწორეთ შეცდომები თქვენს ფაილზე ბრძანების სტრიქონებში.
შინაარსი
- როგორ გამოვასწოროთ Bash სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს
- მეთოდი 1: ხელით შეასწორეთ შეცდომები თითოეულ ბრძანების ხაზში
- ნაბიჯი I: წაიკითხეთ ფაილის შინაარსი
- ნაბიჯი II: წაშალეთ Windows Line breaks
- ნაბიჯი III: დააყენეთ ნებართვები ახლად შექმნილ ფაილზე
- ნაბიჯი IV: დაფორმატეთ კოდი ფაილში
- მეთოდი 2: გადაწერეთ კოდი
- მეთოდი 3: გამოიყენეთ Dos2unix.exe ბრძანება
როგორ გამოვასწოროთ Bash სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს
Linux Bash არის ბრძანების ხაზის თარჯიმანი Linux-ზე დაფუძნებული სისტემისთვის და არის Bourne Shell-ის ან sh-ის შემცვლელი. ფაილები დასახელებულია Linux-ში .sh ფორმატის გამოყენებით
ბაშ სკრიპტირება. თუ ჭურვის სკრიპტის კოდში ფორმატირების პრობლემაა, შესაძლოა სინტაქსის შეცდომა შეგექმნათ. თუ შეცდომა ახლოსაა ( სიმბოლო, ჭურვი მოგაწოდებთ შეცდომას ხაზში და აჩვენებს შეცდომას შესაბამის ხაზში. ვინაიდან Linux Bash არის თარჯიმანი, შეცდომის შემცველი ხაზი დაგიბრუნდებათ ტერმინალში და ის შეწყვეტს სკრიპტის დანარჩენი ბრძანებების სკანირებას. აქედან გამომდინარე, თქვენ უნდა დააფიქსიროთ შეცდომა კონკრეტულ ბრძანების სტრიქონში და გადახვიდეთ შემდეგზე, რათა გამოასწოროთ მოულოდნელი ტოკენის შეცდომა shell სკრიპტში. Linux Bash-ში მოულოდნელ ჟეტონთან ახლოს სინტაქსის შეცდომის მიზეზები ჩამოთვლილია ქვემოთ ამ განყოფილებაში, როგორც ქვემოთ:- კოდირება გაქცევის თანმიმდევრობით- თუ თქვენ დაწერეთ კოდები Bash სკრიპტირებაში, სკრიპტში გაქცევის თანმიმდევრობამ ან ბრჭყალებმა შეიძლება გამოიწვიოს შეცდომები. შეცდომის გამოსასწორებლად გაქცევის მიმდევრობები და ბრჭყალები უნდა დაიწეროს სწორ ფორმატში.
- არასწორი სინტაქსი კოდირების ფაილში - კოდის სინტაქსმა შეიძლება გამოიწვიოს სინტაქსის შეცდომა, თუ ბრძანება დაწერილია არასწორი სინტაქსით, როგორიცაა მარყუჟების რიგის შეცვლა.
- ბრძანების არასწორი გამოყენება - თუ თქვენ არ იყენებთ ბრძანებას სწორად, როგორიცაა არასწორი მნიშვნელობის მინიჭება, შეიძლება გქონდეთ სინტაქსის შეცდომა.
- არათავსებადი OS სისტემებში- თუ კოდირების სკრიპტის გარსი არ არის თავსებადი Unix და DOS სისტემებს შორის, შეიძლება მოულოდნელი შეცდომა გქონდეთ.
- პრობლემები bash shell-ის სკრიპტში- სხვა სისტემიდან დაკოპირებულ ფაილზე bash shell-ის სკრიპტში გაშვებულმა პრობლემებმა შეიძლება გამოიწვიოს ტოკენის მოულოდნელი შეცდომა.
განვიხილოთ ფაილი სახელად მაგალითად.შ შეიქმნა Linux Bash სკრიპტირებაში შემდეგი ბრძანების სტრიქონებით განმარტებითი მიზნებისთვის. მაგალითის ფაილს აქვს სინტაქსის შეცდომების შესაძლებლობა და მოიცავს ყველა შესაძლო ბრძანებას, რომელიც შეიძლება გამოყენებულ იქნას shell სკრიპტში.
str= '(მაგალითი ფაილი)' ბრძანების პირველი ხაზი სკრიპტში'str= [(1,2), (3,4)]if[ $day == “mon” ] მაშინ ექო "მონ"სხვა ექო "არა დღე"ფიVARIABLE-ისთვის {0..2}-ში; მაშინშეასრულეთ ექო ბრძანება1; echo command2; echo command3; echo command4; შესრულებულიახოლო მართალია; გააკეთეთ, თუ [$day == “mon”]; შემდეგ ექო "მონ"; სხვას ექო „არა ორ“; შესრულებულია; ფი
მეთოდი 1: ხელით შეასწორეთ შეცდომები თითოეულ ბრძანების ხაზში
შეცდომების გამოსწორების პირველი მეთოდი არის სინტაქსის შეცდომის ხელით გამოსწორება სკრიპტის თითოეულ ბრძანების სტრიქონში. ბრძანების სტრიქონებში მოულოდნელი ნიშნის მახლობლად სინტაქსის შეცდომების გადაჭრის ნაბიჯები განხილულია ამ ნაწილში. ტერმინალში ტოკენის მოულოდნელი შეცდომის გამოსწორების პროცესი აღწერილია ქვემოთ. გაუშვით ფაილი ში ტერმინალი აკრეფით ./მაგალითი.შ ბრძანება და დააჭირეთ შედიგასაღები.
2. გაითვალისწინეთ ხაზები რომელსაც აქვს მოულოდნელი ნიშანი შეცდომა ბრძანების სტრიქონებში ქვემოთ მოცემულ შედეგზე.
3. შეცდომის გამოსწორება თითოეულ სტრიქონში ქვემოთ განხილული მეთოდების ინდივიდუალურად დაცვით და შენახვა ფაილი.
4. გაიქეცი ცვლილებების შემდეგ კვლავ შეიყვანეთ ფაილი და შეამოწმეთ, მოგვარებულია თუ არა ფაილში სინტაქსის შეცდომა.
ასევე წაიკითხეთ:როგორ დააინსტალიროთ Linux Bash Shell Windows 10-ზე
ნაბიჯი I: წაიკითხეთ ფაილის შინაარსი
პირველი ნაბიჯი ბრძანების სტრიქონებში სინტაქსის შეცდომის გადასაჭრელად არის ფაილის წაკითხვა ტერმინალში. თუ ფაილთან დაკავშირებული პრობლემებია, შესაძლოა ვერ შეძლოთ ფაილის ნახვა. ფაილის ნახვის რეგულარული პრაქტიკა არის ფაილის გაშვება ბრძანების გამოყენებით ./მაგალითი.შ მაგრამ თქვენ არ შეგიძლიათ ფაილის შინაარსის შეცვლა. ოფციები ფაილის შინაარსის სანახავად და ბრძანების სტრიქონების შესაცვლელად სინტაქსის შეცდომის გამოსწორების მიზნით მოულოდნელ ჟეტონთან „(“ განხილულია ქვემოთ.
ვარიანტი 1: CAT ბრძანების მეშვეობით
პირველი ვარიანტი არის გამოიყენოს კატა ბრძანება ფაილის სანახავად shell სკრიპტში. წაიკითხეთ ფაილის შინაარსი მოულოდნელი ნიშნის შეცდომით cat ბრძანების გამოყენებით ბრძანების აკრეფით კატა –ვ მაგალითად.შ ტერმინალში.
შენიშვნა 1: The მაგალითად.შ გამოიყენება განმარტებითი მიზნებისთვის და თქვენ უნდა აკრიფოთ ფაილის სახელი, რომელსაც აქვს მოულოდნელი ტოკენის შეცდომა.
შენიშვნა 2: cat –v ბრძანება გამოიყენება ყველა უხილავი სიმბოლოს საჩვენებლად, რომლებიც, სავარაუდოდ, წარმოადგენენ სატრანსპორტო საშუალების დაბრუნებას ან შესვენების ადგილს.
ვარიანტი 2: VX ბრძანების საშუალებით
თუ ვერ იყენებთ cat ბრძანებას, შეგიძლიათ სცადოთ vx ბრძანების გამოყენება ფაილზე ბრძანებების სანახავად და შესაცვლელად ქვემოთ მოცემული ნაბიჯის გამოყენებით. ჩაწერეთ sh –vx ./მაგალითი.შ ტერმინალში ფაილის გახსნის ბრძანება.
ვარიანტი 3: od –a ბრძანების მეშვეობით
3. თუ ბრძანების სტრიქონებში რამდენიმე უხილავი სიმბოლოა, ფაილის სანახავად შეგიძლიათ გამოიყენოთ od –a ბრძანება. თუ ფაილის შინაარსი არ ჩანს კოდის ფაილში, შეგიძლიათ სცადოთ ფაილის წაკითხვა ბრძანების გამოყენებით od –მაგალითი.შ კოდის შესაცვლელად.
ნაბიჯი II: წაშალეთ Windows Line breaks
თუ Windows-ის ხაზების წყვეტებია shell სკრიპტში, შეგიძლიათ გამოიყენოთ კონსოლის ბრძანებები ხაზის წყვეტების მოსაშორებლად და კოდის ხაზების კოპირება ახალ ფაილში შეცდომის გამოსასწორებლად.
შეიყვანეთ შემდეგი ბრძანება ტერმინალში, რათა შეინახოთ ფაილში არსებული შინაარსი სხვა ფაილში სახელად შესწორებული მაგალითი.შ სკრიპტში Windows-ის ხაზის რღვევის ამოსაღებად.
tr –d ‘\r’შესწორებული მაგალითი.შ
ნაბიჯი III: დააყენეთ ნებართვები ახლად შექმნილ ფაილზე
თქვენ უნდა დააყენოთ ნებართვა ახლად შექმნილ ფაილზე ფაილის რედაქტირებისთვის, რათა ფაილი შესრულდეს გარსში. ჩაწერეთ ბრძანება როგორც chmod 755 შესწორებულიმაგალითი.შ ტერმინალში, რათა უზრუნველყოს ნებართვები ფაილზე და გაუშვა ფაილი. ახლა თქვენ შეგიძლიათ ნახოთ შესწორებული ფაილი და მოაგვაროთ ფორმატირების პრობლემები და დააფიქსიროთ სინტაქსის შეცდომა ფაილში მოულოდნელ ჟეტონთან ახლოს.
ნაბიჯი IV: დაფორმატეთ კოდი ფაილში
მეორე ნაბიჯი არის კოდის ხაზების ინდივიდუალურად ფორმატირება და ფაილზე ბრძანების სტრიქონების ხელით შეცვლა. ფაილის ფორმატირების ვარიანტები სინტაქსის შეცდომის გამოსასწორებლად მოულოდნელ ჟეტონთან ახლოს „(“ განხილულია ქვემოთ ამ განყოფილებაში.
ვარიანტი 1: შეცვალეთ ცალკეული ციტატები ორმაგი ციტატებით
თუ თქვენ იყენებთ ერთ ბრჭყალებს ბრძანების სტრიქონებში, თქვენ უნდა შეცვალოთ ბრძანება ერთჯერადი ციტატის ჩანაცვლებით ორმაგი ბრჭყალებით სინტაქსის შეცდომის გამოსასწორებლად. ში მაგალითად.შ ფაილი, წაშალეთ კოდის ხაზები, რომლებსაც აქვთ ‘ და ’ ან ცალკეული ციტატები ბრძანებაში და შეცვალეთ ერთი ბრჭყალები ორმაგი ციტატები ან “ და ’’. აქ, მაგალითად ფაილში, თქვენ უნდა შეცვალოთ კოდი როგორც str= "\(მაგალითის ფაილი)\" ბრძანების პირველი ხაზი სკრიპტში"
Შენიშვნა: ორმაგი ბრჭყალები აუცილებელია პარამეტრის ტიპის ბრძანებებისთვის, როგორიცაა str= "[(1,2), (3,4)]".
ასევე წაიკითხეთ:2022 წლის 20 საუკეთესო მსუბუქი Linux დისტროსი
ვარიანტი 2: დაამატეთ $ სიმებიანი ხაზებისთვის
თუ სკრიპტს დაამატეთ სტრიქონების მნიშვნელობები, სკრიპტში სინტაქსის შეცდომის გამოსასწორებლად უნდა დაამატოთ $ სტრიქონის მნიშვნელობებს. დაამატეთ $ ბრძანების ხაზებისთვის სიმებიანი მნიშვნელობები მოულოდნელი შეცდომის გამოსასწორებლად. აქ, მაგალითად ფაილში, შეცვალეთ ბრძანების ხაზი, როგორც;
str= $ ‘\(მაგალითის ფაილი)\’ ბრძანების პირველი სტრიქონი სკრიპტში.
Შენიშვნა: თუ იყენებთ $ სტრიქონის მნიშვნელობაში შეგიძლიათ გვერდის ავლით გვერდის ავლით უკანა ხაზის გაქცევის თანმიმდევრობა, რადგან ბრძანების ხაზები დეკოდირდება ANSI C სტანდარტით. სხვა სიტყვებით რომ ვთქვათ, სტრიქონის მნიშვნელობისთვის $-ის გამოყენებით, შეგიძლიათ თავიდან აიცილოთ ორმაგი ბრჭყალების გამოყენება ბრძანების სტრიქონებში ერთჯერადი ბრჭყალების ნაცვლად.
ვარიანტი 3: ჩანართების სივრცეებში გადაყვანა
ბრძანების ორ განცხადებას შორის დატოვებული სივრცეები ჩანართების ნაცვლად უნდა იყოს სივრცეები სკრიპტში სინტაქსის შეცდომის გამოსასწორებლად. თუ შეცდომას იღებთ Cygwin-ზე, შეცდომის გამოსასწორებლად შეგიძლიათ სცადოთ კოდების ჩანართების ინტერვალით გადაყვანა. ბრძანების ხაზი მოცემულია ქვემოთ, როგორც;
შეასრულეთ ექო ბრძანება1; echo command2; echo command3; echo command4; შესრულებულია
ზემოაღნიშნული ბრძანება უნდა გადაიწეროს, როგორც ეს ნაჩვენებია ქვემოთ, შეცდომის გამოსასწორებლად.
შეასრულეთ ექო ბრძანება1; echo command2; echo command3; echo command4; შესრულებულია
ვარიანტი 4: გამოიყენეთ გაქცევის სიმბოლოები
თუ თქვენ იყენებთ bash სიმბოლოს, მნიშვნელოვანია გამოიყენოთ escape სიმბოლო bash სიმბოლოსთან ერთად სინტაქსის შეცდომის გამოსასწორებლად. The ფრჩხილებში ან () არის bash სპეციალური სიმბოლოები ფაილში, შესაბამისად, თქვენ უნდა გამოიყენოთ გაქცევის სიმბოლო ან უკუღმა ბრძანების სტრიქონში ნორმალური სიმბოლოებისგან თავის დაღწევა ბრძანების შესასრულებლად. The str= 'პირველი ბრძანების ხაზი \'(მაგალითი ფაილი)\' სკრიპტში' ბრძანება არ მისცემს შეცდომას ტერმინალში, რადგან გამოიყენება გაქცევის სიმბოლო.
ასევე წაიკითხეთ: როგორ მოხვდეთ ჩვენს შორის Linux-ზე
ვარიანტი 5: გამოიყენეთ სივრცე სიმბოლოებს შორის
Shell სკრიპტი ცნობს ბრძანებებს და განცხადებებს სკრიპტში ნაგულისხმევი მნიშვნელობებით. თქვენ უნდა უზრუნველყოთ სიმბოლოებს შორის სივრცის სწორად გამოყენება, რათა გარსმა შეძლოს სკრიპტში მოცემული ბრძანების იდენტიფიცირება. სივრცე არის სიმბოლო, რომელიც გამოიყენება ბრძანების სტრიქონში ორი სიმბოლოს გასასხვავებლად. კოდში არ არის სივრცე თუ და [, რომელიც იძლევა მოულოდნელ ტოკენის შეცდომას, როგორც თუ[ ბრძანება არ არის იდენტიფიცირებული ჭურვის მიერ. თუ კოდი შეიცვალა თუ [$ დღე == „თვე“]; მაშინ შეცდომა შეიძლება მოგვარდეს როგორც shell bulletin ბრძანება თუ იდენტიფიცირებულია ჭურვით.
ვარიანტი 6: გამოიყენეთ ბრძანების გამყოფი განცხადებებისთვის
Shell-ის სკრიპტის სხვადასხვა ბრძანებები უნდა დაიყოს განცხადებებად, რათა ტერმინალი იდენტიფიცირდეს ცალკეული ბრძანებები. Linux Bash-ში სინტაქსის შეცდომის გამოსასწორებლად უნდა გამოიყენოთ ბრძანების გამყოფი. ბრძანებაში განცხადებები უნდა გამოიყოს ბრძანების გამყოფით, როგორიცაა მძიმით ან a ; ან ახალი ხაზის დაჭერით შედი გასაღები. მაგალითად, ბრძანება კოდში თუ [$ დღე == „ორ“ ] მაშინ უნდა შეიცვალოს როგორც თუ [$ დღე == „თვე“]; მაშინ შეცდომის გამოსასწორებლად. ვინაიდან მძიმით წერია სიმბოლოებს შორის ბრძანების გამყოფად [ და მაშინ, შეგიძლიათ გამოასწოროთ ეს შეცდომა.
ვარიანტი 7: წაშალეთ დამატებითი განცხადებები
ხანდახან შეიძლება დამატებული გქონდეთ დამატებითი განცხადებები ან შეიძლება აურიოთ კოდები მრავალჯერადი ჩადგმული მარყუჟის შემთხვევაში. თქვენ უნდა წაშალოთ დამატებითი განცხადებები ბრძანების სტრიქონებზე, რათა გამოასწოროთ სინტაქსის შეცდომა მოულოდნელი ნიშნის მახლობლად "(" Linux Bash-ში. ბაშის მარყუჟები ამისთვის… შესრულებულია ან და კონსტრუქციული კონსტრუქციები თუ… ფი უნდა იყოს სწორ სინტაქსში. მაგალითის ფაილს აქვს არასწორი სინტაქსი ამისთვის მარყუჟს აქვს ტერმინი მაშინ რომელიც გამოიყენება თუ განცხადება. კოდის შემდეგი კოდის სახით შეცვლა გამოასწორებს ტოკენის მოულოდნელ შეცდომას. Განცხადება მაშინ არის დამატებითი განცხადება კოდში და ტერმინის ამოღება გამოასწორებს შეცდომას.
VARIABLE-ისთვის {0..2}-ში; შეასრულეთ ექო ბრძანება1; echo command2; echo command3; echo command4; შესრულებულია
ვარიანტი 8: დარწმუნდით, რომ განცხადებების დახურვის წესი არის სწორი
თუ ჭურვის სკრიპტში იყენებთ ბევრ ჩადგმულ ან პირობით კონსტრუქციის განცხადებას, უნდა დარწმუნდეთ, რომ მარყუჟები დახურულია მათი გახსნის თანმიმდევრობით. თქვენ შეგიძლიათ გამოიყენოთ ახალი ხაზის გამყოფი მარყუჟებთან კონფლიქტის თავიდან ასაცილებლად. წყობილი მარყუჟების და პირობითი განცხადებების დახურვის თანმიმდევრობა უნდა იყოს სწორი და არ უნდა შეიცვალოს. მარყუჟები კოდში ხოლო მართალია; გააკეთეთ, თუ [$day == “mon”]; შემდეგ ექო "მონ"; სხვას ექო „არა ორ“; შესრულებულია; ფი უნდა დაიხუროს სწორი თანმიმდევრობით. კოდის შეცვლამ, როგორც ნაჩვენებია ქვემოთ, შეიძლება გამოასწოროს ტოკენის მოულოდნელი შეცდომა, რადგან გამოსწორებულია განცხადებების დახურვის თანმიმდევრობა.
ხოლო მართალია; გააკეთეთ, თუ [$day == “mon”]; შემდეგ ექო "მონ"; სხვას ექო „არა ორ“; ფი; შესრულებულია
ასევე წაიკითხეთ:რა არის ბრძანების ხაზის თარჯიმანი?
მეთოდი 2: გადაწერეთ კოდი
თუ თქვენ დააკოპირეთ კოდი და ჩასვით ის ახალ ფაილზე ტერმინალზე, შეგიძლიათ სცადოთ კოდის ხელით გადაწერა შეცდომის გამოსასწორებლად. კოდში არსებული შეცდომები შეიძლება გამოსწორდეს, თუ თქვენ დაწერეთ კოდი ჭურვის სკრიპტში ფორმატის შეცდომის გარეშე. ეს იმიტომ ხდება, რომ დამალულ სიმბოლოებს და ფორმატირების პრობლემებს ტექსტის რედაქტორში, როგორიცაა Microsoft Word, შესაძლოა იყენებდით კოდის კოპირებისა და ჩასმის მიზნით, შესაძლოა შეცდომა დაუშვას.
მეთოდი 3: გამოიყენეთ Dos2unix.exe ბრძანება
თუ იყენებთ Unix ოპერაციულ სისტემას, შეგიძლიათ დაწეროთ კოდები ხაზის არხის სიმბოლოთი, როგორც \n ფაილის შემდეგ სტრიქონზე გადასასვლელად. თუმცა, თუ იყენებთ Windows OS-ს, თქვენ უნდა გადახვიდეთ კოდის შემდეგ სტრიქონზე, ტარების დაბრუნებისა და ხაზის მიწოდების ან \r\n ფაილში. თუ თქვენ შეასრულებთ Windows OS-ში დაწერილ კოდს Cygwin-ში, შეიძლება მიიღოთ სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს „(“ .
შეცდომის გამოსასწორებლად, თქვენ უნდა გაასუფთაოთ ვაგონის დაბრუნების სიმბოლოების გამოყენებით DOS Unix-ზე ბრძანების ხაზის ინსტრუმენტი, როგორც ტექსტური ფაილის ფორმატის გადამყვანი. ჩაწერეთ შემდეგი ბრძანება როგორც dos2unix.exe example.sh ტერმინალში და შეგიძლიათ ფაილის გადაყვანა Unix ფორმატში.
რეკომენდებულია:
- როგორ შევქმნათ Telegram ანგარიში Android-ზე
- დააფიქსირეთ Runtime Error C++ Windows 10-ზე
- როგორ წაშალოთ Github ანგარიში სამუდამოდ
- ტოპ 14 საუკეთესო გრაფიკული ბარათი Linux-ისთვის
სტატიაში განხილულია გამოსწორების ძირითადი მეთოდები Bash სინტაქსის შეცდომა მოულოდნელ ჟეტონთან ახლოს‘(’ სცენარში. თუ იყენებთ Linux Bash-ს, შეგიძლიათ გამოიყენოთ ამ სექციაში ახსნილი მეთოდები, რათა გამოასწოროთ Bash სინტაქსის შეცდომა მოულოდნელ ტოკენთან ახლოს. თუ თქვენ წაიკითხეთ მთელი სტატია და მიგაჩნიათ, რომ შინაარსი სასარგებლოა, გთხოვთ, შეგვატყობინოთ თქვენი წინადადებები და შეკითხვები კომენტარების განყოფილებაში.