Javítsa ki a Bash szintaktikai hibát a váratlan token közelében

A Linux Bash Terminalban történő kódolás a kódolási szektorban uralkodó gyakorlattá vált. A szoftvermérnökök és a kódoló nyelvet tanuló hallgatók különféle hibákba ütköznek. Ha többször is tapasztalt olyan hibákat, mint például a Syntax error közelében váratlan token ‘(‘ vagy a Bash szintaktikai hiba a váratlan token közelében), próbálkozzon a cikkben leírt módszerek használatával, és váljon gyakorlott kódolóvá. Olvassa el a cikkben leírt módszereket a leírt sorrendben, és javítsa ki a hibákat a fájl parancssoraiban.

A Bash szintaktikai hibája a váratlan token közelében

A Linux Bash egy parancssori értelmező a Linux alapú rendszerekhez, és a Bourne Shell vagy sh helyettesítője. A fájlok elnevezése .sh formátumban történik a Linux Bash szkriptekben. Ha formázási problémák vannak a shell script kódjában, szintaktikai hibával szembesülhet. Ha a hiba közel van a ( karakterhez, akkor a shell a sorban lévő hibára figyelmeztet, és a hibát a megfelelő sorban jeleníti meg. Mivel a Linux Bash egy értelmező, a hibát tartalmazó sort visszaküldi Önnek a terminál, és leállítja a szkript többi parancsának vizsgálatát. Ezért ki kell javítania a hibát az adott parancssorban, és tovább kell lépnie a következővel a váratlan token hiba kijavításához a shell szkriptben. A szintaxis okai hiba közeli váratlan token a Linux Bash-ban az alábbiakban felsoroljuk ebben a szakaszban az alábbiak szerint:

  • Kódolás escape szekvenciákkal – Ha a kódokat Bash-szkripttel írta, az escape szekvenciák vagy a szkriptben lévő idézőjelek hibákat okozhatnak. A hiba kijavításához a escape szekvenciákat és az idézőjeleket a megfelelő formátumban kell írni.

  • Hibás szintaxis a kódolófájlban – A kódban lévő szintaxis szintaktikai hibát okozhat, ha a parancs rossz szintaxisban van írva, például megváltoztatja a ciklusok sorrendjét.

  • A parancs helytelen használata – Ha nem megfelelően használja a parancsot, például helytelen érték-hozzárendelést, akkor szintaktikai hiba léphet fel.

  • Nem kompatibilis operációs rendszer a rendszerekben – Ha a kódoló szkript shellje nem kompatibilis a Unix és a DOS rendszerek között, akkor váratlan hiba léphet fel.

  • Problémák a bash shell parancsfájlban – A másik rendszerről másolt fájl bash shell parancsfájljában futó problémák váratlan token hibát okozhatnak.

Tekintsünk egy example.sh nevű fájlt, amelyet a Linux Bash parancsfájlban hoztak létre a következő parancssorokkal magyarázat céljából. A példafájl lehetőséget ad szintaktikai hibákra, és tartalmazza az összes lehetséges parancsot, amely a shell szkriptben használható.

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

1. módszer: Javítsa ki manuálisan a hibákat az egyes parancssorban

A hibák kijavításának első módja a szintaktikai hiba manuális kijavítása a szkript minden parancssorában. Ebben a részben a parancssorban a váratlan token közelében előforduló szintaktikai hibák megoldásának lépéseit tárgyaljuk. Az alábbiakban ismertetjük a terminál váratlan token hibájának kijavításának folyamatát. Futtassa a fájlt a terminálban a ./example.sh parancs beírásával és az Enter billentyű megnyomásával.

2. Jegyezze fel azokat a sorokat, amelyekben a váratlan token hiba található az alábbi eredmény parancssoraiban.

3. Javítsa ki a hibát az egyes sorokban az alábbiakban ismertetett módszerek külön-külön követésével és a fájl mentésével.

4. A módosítások után futtassa újra a fájlt, és ellenőrizze, hogy a szintaktikai hiba megoldódott-e a fájlon.

I. lépés: Olvassa el a fájl tartalmát

A parancssorban lévő szintaktikai hiba megoldásának első lépése a fájl beolvasása a terminálban. HA problémák vannak a fájllal, előfordulhat, hogy nem tudja megtekinteni a fájlt. A fájl megtekintésének szokásos gyakorlata az, hogy a fájlt a ./example.sh paranccsal futtatja, de a fájl tartalma nem módosítható. A fájl tartalmának megtekintéséhez és a parancssorok módosításához a váratlan ‘(‘ token közelében lévő szintaktikai hiba javítása érdekében) az alábbiakban tárgyaljuk.

1. lehetőség: CAT parancson keresztül

Az első lehetőség a cat parancs használata a fájl megtekintéséhez a shell szkriptben. Olvassa el a váratlan token hibával rendelkező fájl tartalmát a cat paranccsal a cat –v example.sh parancs beírásával a terminálba.

1. megjegyzés: Az example.sh fájlt magyarázó célokra használjuk, és be kell írnia annak a fájlnak a nevét, amelyben a váratlan token hiba található.

2. megjegyzés: A cat –v parancs az összes láthatatlan karakter megjelenítésére szolgál, amelyek valószínűleg a kocsi visszatérését vagy a törés nélküli szóközt jelentik.

2. lehetőség: VX parancson keresztül

Ha nem tudja használni a cat parancsot, próbálkozzon a vx paranccsal a fájlban lévő parancsok megtekintéséhez és módosításához az alábbi lépéssel. A fájl megnyitásához írja be az sh –vx ./example.sh parancsot a terminálba.

3. lehetőség: Az od –a parancson keresztül

3. Ha néhány láthatatlan karakter van a parancssorban, az od –a paranccsal tekintheti meg a fájlt. Ha a fájl tartalma nem látható a kódfájlban, megpróbálhatja beolvasni a fájlt az od –a example.sh paranccsal a kód módosításához.

II. lépés: Távolítsa el a Windows sortöréseket

Ha Windows sortörések vannak a shell szkriptben, a konzolparancsokkal eltávolíthatja a sortöréseket, és a hiba kijavításához másolja a kódsorokat egy új fájlba.

Írja be a következő parancsot a terminálba, hogy a fájl tartalmát egy másik, correctedexample.sh nevű fájlba mentse a szkriptben lévő Windows sortörések eltávolításához.

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

III. lépés: Állítsa be az újonnan létrehozott fájl engedélyeit

Az újonnan létrehozott fájlhoz meg kell adni az engedélyt a fájl szerkesztéséhez, hogy a fájl végrehajtható legyen a shellben. Írja be a parancsot chmod 755 correctedexample.sh néven a terminálba a fájl engedélyeinek megadásához és a fájl futtatásához. Most megtekintheti a javított fájlt, kijavíthatja a formázási problémákat, valamint kijavíthatja a szintaktikai hibát a váratlan token ‘(‘ közelében a fájlban.

IV. lépés: Formázza meg a kódot a fájlban

A második lépés a kódsorok egyenkénti formázása és a parancssorok manuális módosítása a fájlban. A fájl formázásának lehetőségeit a váratlan ‘(‘ token közelében lévő szintaktikai hiba kijavítása érdekében) az alábbiakban tárgyaljuk ebben a részben.

1. lehetőség: Cserélje ki az egyszeri idézeteket kettős idézetekre

Ha szimpla idézőjeleket használ a parancssorban, akkor a szintaktikai hiba kijavításához módosítania kell a parancsot úgy, hogy az idézőjeleket dupla idézőjelekre cseréli. Az example.sh fájlból távolítsa el azokat a kódsorokat, amelyekben a ‘ és ‘ vagy az egyes idézőjelek szerepelnek a parancsban, és cserélje ki az egyszeres idézőjeleket a dupla idézőjelekre vagy a ” és ” jelekre. Itt, a példafájlban meg kell változtatnia a kódot a következőképpen: str= “A (példafájl) első parancssora a szkriptben”

Megjegyzés: A dupla idézőjelek szükségesek a paraméter típusú parancsokhoz, például str= “[(1,2),(3,4)]”.

2. lehetőség: $ hozzáadása a karakterláncokhoz

Ha karakterlánc-értékeket adott a szkripthez, a szkriptben lévő szintaktikai hiba kijavításához hozzá kell adni egy $ karakterláncot a karakterláncértékekhez. Adja hozzá a $ értéket a parancssorokhoz a karakterlánc-értékekkel a váratlan hiba kijavításához. Itt, a példafájlban változtassa meg a parancssort mint;

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

Megjegyzés: Ha a $ karakterláncot használja a karakterlánc értékben, akkor megkerülheti a fordított perjel escape szekvenciát, mivel a parancssorokat az ANSI C szabvány dekódolja. Más szóval, ha $ karakterláncot használ, elkerülheti a dupla idézőjelek használatát a parancssorban.

3. lehetőség: Tabulátorok konvertálása szóközökké

A parancsban a két utasítás között hagyott szóközöknek tabulátorok helyett szóközöknek kell lenniük a szkript szintaktikai hibájának kijavításához. Ha a hibát a Cygwinnél kapja, megpróbálhatja a kódokban lévő tabulátorokat szóközökké alakítani a hiba kijavításához. A parancssor az alábbiakban látható:

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

A hiba kijavításához a fenti parancsot át kell írni az alábbiak szerint.

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

4. lehetőség: Escape karakterek használata

Ha bash karaktert használ, fontos, hogy a bash karakter mellett egy escape karaktert is használjon a szintaktikai hiba kijavításához. A zárójelek vagy () bash speciális karakterek a fájlban, ezért az escape karaktert vagy a fordított perjelet kell használnia a parancssorban a normál karakterek kilépéséhez a parancs végrehajtásához. Az str= ‘A ‘(példafájl)’ első parancssora a script’ parancsban nem ad hibát a terminálban, mivel az escape karakter használatos.

5. lehetőség: használjon szóközt a karakterek között

A shell script az alapértelmezett értékek alapján ismeri fel a parancsfájlban található parancsokat és utasításokat. Gondoskodnia kell a karakterek közötti szóköz megfelelő használatáról, hogy a shell azonosítani tudja a szkriptben adott parancsot. A szóköz egy karakter, amely két karakter megkülönböztetésére szolgál a parancssorban. A kódban nincs szóköz az if és az között [, 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” ]; akkor a hiba megoldható a shell bulletin paranccsal, ha a shell azonosítja.

6. lehetőség: Parancselválasztó használata az utasításokhoz

A héjszkriptben lévő különféle parancsokat utasításokra kell szétválasztani, hogy a terminál azonosítsa az egyes parancsokat. A Linux Bash szintaktikai hibájának kijavításához parancselválasztót kell használnia. A parancs utasításait parancselválasztóval kell elválasztani, például pontosvesszővel vagy ; vagy új sort az Enter billentyű megnyomásával. Például az if parancsot a kódban [ $ day == “mon” ] akkor úgy kell módosítani, mintha [ $ day == “mon” ]; majd kijavítani a hibát. Mivel a pontosvesszőt parancselválasztóként használják a karakterek között [ 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” ]; majd echo „mon”; else echo „nem mon”; Kész; fi be kell zárni a megfelelő sorrendben. A kód alább látható módosítása javíthatja a váratlan token hibát, ahogy az utasítások lezárásának sorrendje kijavítható.

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

2. módszer: Kód újraírása

Ha kimásolta a kódot és beillesztette egy új fájlba a terminálon, megpróbálhatja manuálisan átírni a kódot a hiba kijavításához. A kódban lévő hibák kijavíthatók, ha a kódot formátumhiba nélkül írta meg a shell szkriptben. Ennek az az oka, hogy a rejtett karakterek és a szövegszerkesztőben, például a Microsoft Wordben előforduló formázási problémák okozhatták a kód másolásához és beillesztéséhez használt hibát.

3. módszer: Használja a Dos2unix.exe parancsot

Ha Unix operációs rendszert használ, akkor a soremelés karakterrel n kódokat írhat, hogy a fájl következő sorába lépjen. Ha azonban Windows operációs rendszert használ, akkor a kód következő sorára kell lépnie a kocsivissza és a soremelés vagy a fájlban található rn használatával. Ha végrehajtja a Windows operációs rendszerben írt kódot a Cygwinben, előfordulhat, hogy a szintaktikai hiba a váratlan ‘(‘ token közelében).

A hiba kijavításához törölnie kell a kocsivissza karaktereket a DOS–Unix parancssori eszköz használatával szöveges fájlformátum konvertálóként. Írja be a következő parancsot dos2unix.exe example.sh néven a terminálba, és konvertálhatja a fájlt Unix formátumba.

***

A cikk a Bash szintaktikai hiba kijavításának alapvető módszereit tárgyalja a szkriptben a váratlan token ‘(‘ közelében. Ha Linux Bash-t használ, az ebben a részben ismertetett módszerekkel javíthatja ki a Bash szintaktikai hibát a váratlan token közelében. Ha Ha elolvasta a teljes cikket, és a tartalmat hasznosnak találta, kérjük, ossza meg velünk javaslatait és kérdéseit a megjegyzések részben.

  Ellenőrizze, hogy sebezhető-e az összeomlás és a kísérteties miatt Linuxon