Javítás: Szintaxis hiba a váratlan token közelében `('

A hibaüzenet szintaxis hibája a váratlan token közelében ("(" ) a Cygwin Unix típusú környezetben és a Windows parancssori felületén fordul elő. Ez a hiba valószínűleg akkor fordul elő, amikor megkísérel futtatni egy szerkesztett shell parancsfájlt, vagy régebbi DOS / Windows vagy Mac rendszerekben készített.

Szintaxis hiba a váratlan token közelében `('

Ez a hibaüzenet akkor is felmerül, ha parancsokat ír be a Linux parancssorba olyan mindennapi feladatokhoz, mint a fájlok kézi másolása stb. A hibaüzenet legfőbb oka vagy a rossz szintaxis, vagy az operációs rendszer problémája egy másik rendszer parancsai értelmezésében / héj.

Mi okozza a szintaxis hibát a váratlan token közelében `('?

Ennek a hibaüzenetnek az okai nagyon sokrétűek, ezért azokat nem lehet egy cikkben felsorolni, mivel a szintaxis ezreinek lehetõségei vannak rosszul a parancsok végrehajtásakor. A hiba fő okai:

  • Rossz szintaxis, ha bármelyik platformon bármely parancsot végrehajtunk. Vagy nem helyesen használja a parancsot, vagy rossz szintaxist adott meg.
  • A héj nem kompatibilis az Unix / DOS rendszerek között.
  • Probléma van a bash shell parancsfájl futtatásával egy másik forrásból .

Ebben a cikkben feltételezzük, hogy ismeri a kódolás alapjait, és van egy ötlete, amit csinál. Ha Ön kezdő, akkor a legjobb, ha követi a végrehajtani próbált nyelv / parancs alapos útmutatásait. Valószínűleg hibát követett el néhány szintaxisban.

1. megoldás: A szintaxis és a parancsok formátumának ellenőrzése

Ennek a hibaüzenetnek az első és legfontosabb oka a hibás szintaxis a kódban, vagy az, hogy nem követi a parancsok pontos formátumát. Minden parancsnak van egy előre meghatározott formátuma, amelyet a dokumentációban láthat. Számos paraméter választható, mások kötelezőek.

Ezenkívül különös figyelmet kell fordítani a további helyre, az idézőjelek használatára és a kötelező paraméterekre. Ha ezek közül bármelyik hiányzik vagy helytelenül jelenik meg, akkor nem fogja végrehajtani a kódját.

Például a következő kód helyett

 [mycom7] # ./ctopo.sh um_test1 [(1, 2), (2, 1)] 

Végre kell hajtania

 [mycom7] # ./ctopo.sh um_test1 "[(1, 2), (2, 1)]" 

Ezenkívül győződjön meg arról, hogy a parancsokat / shell parancsfájlt helyesen hajtja végre, ha több sorra terjed ki.

A paraméter típusa miatt dupla idézőjelekre van szükség. Egy további hely elronthatja a kódot, és kényszerítheti a hibaüzenetet. Ellenőrizze, hogy ellenőrizte-e a végrehajtott parancs hivatalos dokumentációját, és nézze meg, van-e benne probléma.

2. megoldás: Hibaelhárítás a shell parancsfájlban

Ha olyan shell szkriptet használ, amely a forrásrendszerben működik, de hibát ad vissza a célban, akkor a szkript hibaelhárításához ellenőrizze a végrehajtás során tárolt változókat, majd megnézze, mi okozza a problémát. Ez nagyon gyakori ok, mivel számos esetben a héj megpróbálja értelmezni a nyomtathatatlan karaktert.

Próbálkozzon a héj futtatásával a 'vx' paraméterrel. Ez megmutatja nekünk, hogy milyen parancsokat futtatunk, és milyen értékeket tárolunk a szkriptben. Itt áttekintheti és diagnosztizálhatja a hibákat.

Például hajtsa végre a szkriptet a terminálon, miután beillesztette a 'vx' kifejezést:

 # sh -vx ./test_script5.sh 

A szkript tartalmát a 'macska' paranccsal ellenőrizheti:

 # macska test_script5.sh 

3. megoldás: A 'dos2unix.exe' parancs használata

A Windows / DOS szövegfájlokban egy új sor a Carriage Return (\ r), majd a Line Feed (\ n) kombinációja. A Mac rendszerben (a Mac OS X előtt) a sortörés egy egyszerű Carriage Return-t használt. Az Unix / Linux és a Mac OS X a Line Feed (\ n) sortöréseket használja. Ha Cygwin-t használ, akkor a DOS / Windows és az régebbi Mac által készített szkriptek feldolgozása az extra Carriage Return (r) karakter miatt nem sikerül.

A 'dos2unix.exe' parancs használata

Itt elkészítheti a 'dos2unix.exe' parancsot, amely konvertálja a szkriptet a megfelelő formátumba, majd probléma nélkül végrehajthatja.

Befejezésül meg kell vizsgálnunk a parancsokat és a használt platform típusát, és ellenőriznünk kell, hogy vannak-e eltérések. Mivel nem tudjuk lefedni minden lehetőséget, akkor elképzelése lenne, hogy milyen hibák fordulhatnak elő, és hogyan lehet azokat kijavítani.

Érdekes Cikkek