A hibaüzenet szintaktikai hibája a váratlan token közelében ((' Unix típusú környezetben, a Cygwinben és a Windows parancssori felületén fordul elő). Ez a hiba valószínűleg akkor váltódik ki, amikor megpróbál futtatni egy parancsfájlt, amelyet szerkesztettek vagy régebbi DOS / Windows vagy Mac rendszerekben készült.
Ez a hibaüzenet akkor is felszínre kerül, amikor parancsokat ír be a Linux parancssorába a mindennapi feladatokhoz, például a fájlok manuális másolásához stb. héj.
Mi okozza a szintaktikai hibát a váratlan token ((?) Közelében
Ennek a hibaüzenetnek az okai nagyon sokfélék, és nem sorolhatók fel egy cikkben, mivel a parancsok végrehajtásakor a szintaxis ezer hibája lehet. A hiba fő okai a következők:
- Rossz szintaxis bármelyik parancs végrehajtásakor bármelyik platformon. Vagy nem megfelelően használja a parancsot, vagy rossz szintaxist adott meg.
- A shell nem kompatibilis a Unix / DOS rendszerek között.
- Vannak problémák, amelyek egy másik forrásból futtatják a bash shell parancsfájlt .
Ebben a cikkben feltételezzük, hogy ismeri a kódolás alapjait, és van elképzelése arról, hogy mit csinál. Ha Ön kezdő, akkor a legjobb, ha követi a végrehajtani kívánt nyelv / parancs részletes bemutatóit. Valószínűleg valamilyen szintaxist hibázott.
1. megoldás: A parancsok szintaxisának és formátumának ellenőrzése
Az első és legfontosabb ok, amiért ezt a hibaüzenetet tapasztalhatja, az a kód hibás szintaxisa, vagy nem követi a parancsok pontos formátumát. Minden parancsnak van egy előre definiált formátuma, amelyet a dokumentációjában láthat. Számos paraméter választható, mások kötelezőek.
Ezenkívül fokozott gondossággal kell eljárni a további helyért , a dupla idézőjelek használatáért és a kötelező paraméterekért. Ha bármelyik hiányzik vagy helytelenül lett bejelentve, akkor nem tudja végrehajtani a kódját.
Például a következő kód helyett
[mycom7] # ./ctopo.sh um_test1 [(1,2), (2,1)]
Úgy kell végrehajtanod
[mycom7] # ./ctopo.sh um_test1 "[(1,2), (2,1)]"
Győződjön meg arról is, hogy a parancsokat / shell parancsfájlokat helyesen hajtja-e végre, ha azok több sort is átívelnek.
A paraméter típusa miatt dupla idézőjelek szükségesek. Egy további szóköz tönkreteheti a kódot, és a hibaüzenetet kényszeríti. Győződjön meg arról, hogy ellenőrizte a végrehajtott parancs hivatalos dokumentációját , és megnézi, van-e ott probléma.
2. megoldás: A shell szkript hibaelhárítása
Ha olyan parancsfájlt használ, amely a forrásrendszerben működik, de hibát ad vissza a célpontban, akkor a szkript hibakeresését ellenőrizheti a végrehajtás során tárolt változók ellenőrzésével, majd megnézheti, hogy mi okozza a problémát. Ez nagyon gyakori ok, mivel több esetben a shell megpróbálja értelmezni egy nem nyomtatható karaktert.
Futtassa a héjat a 'vx' paraméterrel. Ez megmutatja, milyen parancsokat futtatnak, és milyen értékeket tárolnak a szkriptben. Itt keresztül megoldhatja a hibákat és diagnosztizálhatja, hogy mi a baj.
Például hajtsa végre a parancsfájlt a terminálban, miután a „vx” szót beillesztette:
# sh -vx ./test_script5.sh
A szkript tartalmát a 'cat' paranccsal ellenőrizheti:
# cat test_script5.sh
3. megoldás: A „dos2unix.exe” parancs használata
A Windows / DOS szövegfájlokban az új sor a kocsi visszatérésének (\ r), majd a sor előtolásnak (\ n) kombinációja. Mac-ben (a Mac OS X előtt) egy sortörésnél egyszerű Carriage Return-t (\ r) használtak. A Unix / Linux és a Mac OS X a Line Feed (\ n) sortöréseket használja. Ha a Cygwint használja, akkor az extra Carriage Return (\ r) karakter miatt nem tudja feldolgozni a DOS / Windows és a régebbi Mac szkriptjeit.
Itt elkészítheti a 'dos2unix.exe' parancsot, amely a szkriptet a megfelelő formátumra konvertálja, majd probléma nélkül végrehajthatja.
Befejezésül meg kell vizsgálnia a parancsokat és a használt platform típusát, és ellenőriznie kell, hogy nincsenek-e eltérések. Mivel nem tudjuk lefedni az egyes lehetőségeket, van egy ötlete, hogy milyen hibák fordulhatnak elő és hogyan lehet ezeket kijavítani.