Napraw błąd składni Bash w pobliżu nieoczekiwanego tokena

Kodowanie w Linux Bash Terminal stało się dominującą praktyką w sektorze kodowania. Inżynierowie oprogramowania i studenci uczący się języka kodowania spotykają się z różnymi błędami. Jeśli wielokrotnie widziałeś błędy, takie jak błąd składni w pobliżu nieoczekiwanego tokena „(” lub błąd składni Bash w pobliżu nieoczekiwanego tokena, możesz spróbować polegać na metodach opisanych w artykule i stać się biegłym koderem. Przeczytaj metody opisane w artykule w artykule kolejność opisana i napraw błędy w wierszach poleceń w swoim pliku.

Jak naprawić błąd składni Bash w pobliżu nieoczekiwanego tokena?

Linux Bash jest interpreterem wiersza poleceń dla systemu opartego na systemie Linux i zastępuje powłokę Bourne Shell lub sh. Pliki są nazywane przy użyciu formatu .sh w skryptach Linux Bash. Jeśli występują problemy z formatowaniem w kodzie w skrypcie powłoki, możesz napotkać błąd składni. Jeśli błąd jest zbliżony do znaku (, powłoka poprosi o podanie błędu w linii i wyświetli błąd w odpowiedniej linii. Ponieważ Linux Bash jest interpreterem, linia z błędem zostanie zwrócona w Terminal i przestanie skanować pozostałe polecenia w skrypcie. Dlatego musisz naprawić błąd w konkretnym wierszu poleceń i przejść do następnego, aby naprawić nieoczekiwany błąd tokena w skrypcie powłoki. Przyczyny składni błąd w pobliżu nieoczekiwanego tokena w Linux Bash są wymienione poniżej w tej sekcji, jak poniżej:

  • Kodowanie za pomocą sekwencji ucieczki — jeśli kody zostały napisane w skryptach Bash, sekwencje ucieczki lub znaki cudzysłowu w skrypcie mogą powodować błędy. Sekwencje specjalne i cudzysłowy muszą być napisane we właściwym formacie, aby naprawić błąd.

  • Nieprawidłowa składnia w pliku kodującym — składnia w kodzie może powodować błąd składni, jeśli polecenie jest napisane w niewłaściwej składni, np. zmieniając kolejność pętli.

  • Niewłaściwe użycie polecenia — jeśli nie używasz polecenia poprawnie, na przykład niepoprawne przypisanie wartości, możesz mieć błąd składni.

  • Niezgodny system operacyjny w systemach — Jeśli powłoka skryptu kodującego nie jest zgodna między systemami Unix i DOS, może wystąpić nieoczekiwany błąd.

  • Problemy w skrypcie powłoki bash — problemy działające w skrypcie powłoki bash w pliku skopiowanym z innego systemu mogą powodować nieoczekiwany błąd tokena.

Rozważmy plik o nazwie example.sh utworzony w skrypcie Linux Bash za pomocą następujących wierszy poleceń w celach objaśniających. Przykładowy plik zawiera możliwości błędów składniowych i zawiera wszystkie możliwe polecenia, których można użyć w skrypcie powłoki.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Metoda 1: Ręcznie napraw błędy w każdym wierszu poleceń

Pierwszą metodą naprawienia błędów jest ręczne naprawienie błędu składni w każdym wierszu polecenia w skrypcie. W tej sekcji omówiono kroki mające na celu rozwiązanie błędów składni w pobliżu nieoczekiwanego tokenu w wierszach poleceń. Poniżej opisano proces naprawy nieoczekiwanego błędu tokena w terminalu. Uruchom plik w Terminalu, wpisując polecenie ./example.sh i naciskając klawisz Enter.

2. Zwróć uwagę na wiersze, które zawierają nieoczekiwany błąd tokena w wierszach poleceń w poniższym wyniku.

3. Napraw błąd w każdym wierszu, stosując metody omówione poniżej indywidualnie i zapisując plik.

4. Uruchom plik ponownie po zmianach i sprawdź, czy błąd składni został rozwiązany w pliku.

Krok I: Przeczytaj zawartość pliku

Pierwszym krokiem do rozwiązania błędu składni w wierszach poleceń jest odczytanie pliku w Terminalu. Jeśli wystąpią problemy z plikiem, możesz nie być w stanie go wyświetlić. Standardową praktyką przeglądania pliku jest uruchomienie pliku za pomocą polecenia ./example.sh, ale nie można modyfikować zawartości pliku. Opcje przeglądania zawartości pliku i modyfikowania wierszy poleceń w celu naprawienia błędu składni w pobliżu nieoczekiwanego tokena '(’ są omówione poniżej.

Opcja 1: Za pomocą polecenia CAT

Pierwszą opcją jest użycie polecenia cat do wyświetlenia pliku w skrypcie powłoki. Przeczytaj zawartość pliku z nieoczekiwanym błędem tokena za pomocą polecenia cat, wpisując polecenie cat –v example.sh w terminalu.

Uwaga 1: Plik example.sh służy do celów objaśniających i należy wpisać nazwę pliku, który zawiera nieoczekiwany błąd tokenu.

Uwaga 2: Polecenie cat –v służy do wyświetlania wszystkich niewidocznych znaków, które prawdopodobnie reprezentują powrót karetki lub spację bez przerwy.

Opcja 2: Za pomocą polecenia VX

Jeśli nie możesz użyć polecenia cat, możesz spróbować użyć polecenia vx, aby wyświetlić i zmienić polecenia w pliku, wykonując krok podany poniżej. Wpisz sh –vx ./example.sh polecenie w terminalu, aby otworzyć plik.

Opcja 3: Poprzez od –dowództwo

3. Jeśli w wierszach poleceń znajduje się kilka niewidocznych znaków, możesz użyć polecenia od –a, aby wyświetlić plik. Jeśli zawartość pliku nie jest widoczna w pliku z kodem, możesz spróbować odczytać plik za pomocą polecenia od –a example.sh, aby zmodyfikować kod.

Krok II: Usuń przerwy w wierszach systemu Windows

Jeśli w skrypcie powłoki występują podziały wierszy systemu Windows, można użyć poleceń konsoli, aby usunąć podziały wierszy i skopiować wiersze kodu do nowego pliku, aby naprawić błąd.

Wprowadź następujące polecenie w terminalu, aby zapisać zawartość pliku w innym pliku o nazwie correctedexample.sh, aby usunąć podziały wierszy systemu Windows w skrypcie.

tr –d ‘r’ <example.sh> correctedexample.sh

Krok III: Ustaw uprawnienia do nowo utworzonego pliku

Musisz ustawić uprawnienia do nowo utworzonego pliku, aby edytować plik, aby plik mógł być wykonywany w powłoce. Wpisz polecenie jako chmod 755 correctedexample.sh w terminalu, aby zapewnić uprawnienia do pliku i uruchomić plik. Możesz teraz wyświetlić poprawiony plik i naprawić problemy z formatowaniem oraz naprawić błąd składni w pobliżu nieoczekiwanego tokena „(” w pliku.

Krok IV: Formatuj kod w pliku

Drugim krokiem jest indywidualne sformatowanie linii kodu i ręczna zmiana linii poleceń w pliku. Opcje formatowania pliku w celu naprawienia błędu składni w pobliżu nieoczekiwanego tokena „(” są omówione poniżej w tej sekcji.

Opcja 1: Zamień pojedyncze cudzysłowy na podwójne cudzysłowy

Jeśli używasz pojedynczych cudzysłowów w wierszach poleceń, musisz zmienić polecenie, zastępując pojedynczy cudzysłów podwójnymi cudzysłowami, aby naprawić błąd składni. W pliku example.sh usuń wiersze kodu zawierające „ i ” lub pojedyncze cudzysłowy w poleceniu i zastąp pojedyncze cudzysłowy podwójnymi cudzysłowami lub „ i ”. Tutaj, w przykładowym pliku, musisz zmienić kod na str= „Pierwszy wiersz polecenia „(przykładowy plik)” w skrypcie”

Uwaga: podwójne cudzysłowy są niezbędne dla poleceń typu parametru, takich jak str= “[(1,2),(3,4)]”.

Opcja 2: Dodaj $ do linii ciągów

Jeśli dodałeś do skryptu wartości ciągu, musisz dodać $ do wartości ciągu, aby naprawić błąd składni w skrypcie. Dodaj $ dla wierszy poleceń z wartościami ciągu, aby naprawić nieoczekiwany błąd. Tutaj, w przykładowym pliku, zmień wiersz poleceń na;

str= $ ‘First command line of ‘(example file)’ in the script’

Uwaga: Jeśli używasz $ w wartości ciągu, możesz pominąć sekwencję ucieczki odwrotnego ukośnika, ponieważ wiersze poleceń są dekodowane zgodnie ze standardem ANSI C. Innymi słowy, używając $ jako wartości ciągu, możesz uniknąć używania podwójnych cudzysłowów zamiast pojedynczych cudzysłowów w wierszach poleceń.

Opcja 3: Konwertuj karty na spacje

Spacje, które zostawiłeś między dwoma instrukcjami w poleceniu, muszą być spacjami zamiast tabulatorami, aby naprawić błąd składni w skrypcie. Jeśli otrzymujesz błąd na Cygwin, możesz spróbować przekonwertować tabulatory w kodach na spacje, aby naprawić błąd. Linia poleceń jest podana poniżej jako;

do echo command1;       echo command2;             echo command3;             echo command4;             done

Powyższe polecenie należy przepisać, jak pokazano poniżej, aby naprawić błąd.

do echo command1; echo command2; echo command3; echo command4; done

Opcja 4: Użyj znaków ucieczki

Jeśli używasz znaku bash, ważne jest, aby użyć znaku ucieczki wraz ze znakiem bash, aby naprawić błąd składni. Nawiasy lub () są znakami specjalnymi bash w pliku, dlatego w celu wykonania polecenia należałoby użyć znaku ucieczki lub odwrotnego ukośnika w wierszu poleceń. Polecenie str= „Pierwszy wiersz polecenia „(przykładowy plik)” w skrypcie nie spowoduje błędu w terminalu, ponieważ używany jest znak ucieczki.

Opcja 5: Użyj spacji między znakami

Skrypt powłoki rozpoznaje polecenia i instrukcje w skrypcie według wartości domyślnych. Należy zadbać o właściwe wykorzystanie spacji między znakami, aby powłoka mogła zidentyfikować polecenie podane w skrypcie. Spacja to znak używany do rozróżnienia dwóch znaków w wierszu poleceń. W kodzie nie ma spacji między if i [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; wtedy błąd można rozwiązać za pomocą polecenia biuletynu powłoki, jeśli jest identyfikowany przez powłokę.

Opcja 6: Użyj separatora poleceń dla instrukcji

Różne polecenia w skrypcie powłoki muszą zostać podzielone na instrukcje, aby Terminal mógł zidentyfikować poszczególne polecenia. Musisz użyć separatora poleceń, aby naprawić błąd składni w Linux Bash. Instrukcje w poleceniu muszą być oddzielone separatorem poleceń, takim jak średnik lub ; lub nową linię, naciskając klawisz Enter. Na przykład polecenie w kodzie if [ $ day == “mon” ] to musi zostać zmienione tak, jakby [ $ day == “mon” ]; następnie naprawić błąd. Ponieważ średnik jest używany jako separator poleceń między znakami [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; następnie powtórz „mon”; w przeciwnym razie echo „nie pon”; Gotowe; fi musi być zamykany we właściwej kolejności. Zmiana kodu, jak pokazano poniżej, może naprawić nieoczekiwany błąd tokenu, ponieważ poprawiona zostanie kolejność zamykania instrukcji.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Metoda 2: Przepisz kod

Jeśli skopiowałeś kod i wkleiłeś go do nowego pliku w Terminalu, możesz spróbować przepisać kod ręcznie, aby naprawić błąd. Błędy w kodzie można naprawić, jeśli napisałeś kod bez błędów formatu w skrypcie powłoki. Dzieje się tak, ponieważ ukryte znaki i problemy z formatowaniem w edytorze tekstu, takim jak Microsoft Word, mogłeś użyć do skopiowania i wklejenia kodu, który mógł spowodować błąd.

Metoda 3: Użyj polecenia Dos2unix.exe

Jeśli używasz systemu operacyjnego Unix, możesz pisać kody ze znakiem nowego wiersza jako n, aby przejść do następnego wiersza w pliku. Jeśli jednak używasz systemu operacyjnego Windows, musisz przejść do następnego wiersza w kodzie, używając znaku powrotu karetki i wysuwu wiersza lub rn w pliku. Jeśli wykonasz kod napisany w systemie operacyjnym Windows w Cygwin, możesz otrzymać błąd składni w pobliżu nieoczekiwanego tokena '(’.

Aby naprawić błąd, należy wyczyścić znaki powrotu karetki za pomocą narzędzia wiersza poleceń DOS na Unix jako konwertera formatu pliku tekstowego. Wpisz następujące polecenie jako dos2unix.exe przykład.sh w terminalu i możesz przekonwertować plik do formatu Unix.

***

W artykule omówiono podstawowe metody naprawy błędu składni Bash w pobliżu nieoczekiwanego tokena „(” w skrypcie. Jeśli używasz Linux Bash, możesz użyć metod wyjaśnionych w tej sekcji, aby naprawić błąd składni Bash w pobliżu nieoczekiwanego tokena. przeczytałeś cały artykuł i stwierdziłeś, że treść jest przydatna, prosimy o przekazanie nam swoich sugestii i pytań w sekcji komentarzy.