Labojiet Bash sintakses kļūdu netālu no neparedzēta marķiera
Miscellanea / / May 30, 2022
Kodēšana Linux Bash terminālī ir kļuvusi par dominējošu praksi kodēšanas nozarē. Programmatūras inženieri un studenti, kuri apgūst kodēšanas valodu, saskaras ar dažādām kļūdām. Ja esat atkārtoti redzējis kļūdas, piemēram, sintakses kļūda neparedzēta marķiera tuvumā vai Bash sintakses kļūda netālu no negaidītas pilnvaras, varat mēģināt paļauties uz rakstā aprakstītajām metodēm un kļūt par lietpratēju kodētājs. Izlasiet rakstā aprakstītās metodes aprakstītajā secībā un izlabojiet kļūdas faila komandrindās.
Saturs
- Kā labot Bash sintakses kļūdu neparedzēta marķiera tuvumā
- 1. metode: manuāli izlabojiet kļūdas katrā komandrindā
- I darbība: izlasiet faila saturu
- II darbība: noņemiet Windows līnijas pārtraukumus
- III darbība: iestatiet jaunizveidotā faila atļaujas
- IV darbība: formatējiet kodu failā
- 2. metode: pārrakstīt kodu
- 3. metode: izmantojiet komandu Dos2unix.exe
Kā labot Bash sintakses kļūdu neparedzēta marķiera tuvumā
Linux Bash ir komandrindas tulks uz Linux balstītai sistēmai un aizstāj Bourne Shell vai sh. Faili tiek nosaukti, izmantojot .sh formātu operētājsistēmā Linux
Bash skriptu veidošana. Ja čaulas skripta kodā ir formatēšanas problēmas, var rasties sintakses kļūda. Ja kļūda ir tuvu ( rakstzīmi, apvalks liks jums norādīt kļūdu rindā un parādīs kļūdu attiecīgajā rindā. Tā kā Linux Bash ir tulks, rindiņa ar kļūdu tiks atgriezta jums terminālī un pārtrauks pārējo skripta komandu skenēšanu. Tādējādi jums ir jānovērš kļūda konkrētajā komandrindā un jāturpina ar nākamo, lai labotu neparedzēto marķiera kļūdu čaulas skriptā. Cēloņi sintakses kļūdai, kas radusies netālu no neparedzēta marķiera operētājsistēmā Linux Bash, ir norādīti tālāk šajā sadaļā, kā norādīts tālāk:- Kodēšana ar evakuācijas secībām- Ja kodus esat rakstījis Bash skriptēšanā, skripta atsoļa secības vai pēdiņas var izraisīt kļūdas. Lai labotu kļūdu, atsoļu secības un pēdiņas ir jāieraksta pareizajā formātā.
- Nepareiza sintakse kodēšanas failā- Sintakse kodā var radīt sintakses kļūdu, ja komanda ir rakstīta nepareizā sintaksē, piemēram, mainot cilpu secību.
- Nepareizs komandas lietojums- Ja komandu neizmantojat pareizi, piemēram, nepareizi piešķirat vērtību, iespējams, ir radusies sintakses kļūda.
- Nesaderīga OS sistēmās- Ja kodēšanas skripta apvalks nav saderīgs starp Unix un DOS sistēmām, iespējams, ir radusies neparedzēta kļūda.
- Problēmas bash čaulas skriptā- Problēmas, kas darbojas bash čaulas skriptā failā, kas kopēts no citas sistēmas, var izraisīt neparedzētu marķiera kļūdu.
Apsveriet failu ar nosaukumu piemērs.sh izveidots Linux Bash skriptā ar šādām komandrindām paskaidrojuma nolūkos. Piemēra failā ir sintakses kļūdu iespējas, un tajā ir iekļautas visas iespējamās komandas, kuras var izmantot čaulas skriptā.
str= ‘’(piemēra faila)’ pirmā komandrinda skriptā’str= [(1,2),(3,4)]ja[ $day == “mon” ], tad atbalss "mon"cits atbalss "nē mon"fiVARIABLE in {0..2}; taddo echo command1; atbalss komanda2; atbalss komanda3; atbalss komanda4; darītskamēr patiesība; darīt, ja [ $ diena == “mon”]; tad atbalss "mon"; else atbalss "nav mon"; darīts; fi
1. metode: manuāli izlabojiet kļūdas katrā komandrindā
Pirmā kļūdu labošanas metode ir manuāli labot sintakses kļūdu katrā skripta komandrindā. Darbības, lai atrisinātu sintakses kļūdas, kas atrodas blakus neparedzētam marķierim komandrindās, ir apskatītas šajā sadaļā. Tālāk ir aprakstīts process, kā novērst neparedzētu marķiera kļūdu terminālī. Palaidiet failu mapē Terminālis ierakstot ./example.sh komandu un nospiežot Ievadiettaustiņu.
2. Ņemiet vērā līnijas kuriem ir neparedzēta marķiera kļūda tālāk norādītā rezultāta komandrindās.
3. Izlabojiet kļūdu katrā rindā, ievērojot tālāk aprakstītās metodes atsevišķi un ietaupot fails.
4. Skrien failu vēlreiz pēc izmaiņām un pārbaudiet, vai failā ir novērsta sintakses kļūda.
Lasi arī:Kā instalēt Linux Bash Shell operētājsistēmā Windows 10
I darbība: izlasiet faila saturu
Pirmais solis, lai atrisinātu sintakses kļūdu komandrindās, ir faila nolasīšana terminālī. JA ir problēmas ar failu, iespējams, nevarēsit skatīt failu. Parastā faila skatīšanas prakse ir palaist failu, izmantojot komandu ./example.sh bet jūs nevarat mainīt faila saturu. Faila satura skatīšanas un komandrindu modificēšanas opcijas, lai labotu sintakses kļūdu neparedzētā marķiera tuvumā “(”, ir aprakstītas tālāk.
1. iespēja: izmantojot CAT komandu
Pirmā iespēja ir izmantot kaķis komandu, lai skatītu failu čaulas skriptā. Izlasiet faila saturu ar neparedzētu marķiera kļūdu, izmantojot komandu cat, ierakstot komandu kaķis –v piemērs.sh terminālī.
1. piezīme: The piemērs.sh tiek izmantots skaidrojošiem nolūkiem, un jums ir jāievada faila nosaukums, kurā ir neparedzēta marķiera kļūda.
2. piezīme: Komanda cat –v tiek izmantota, lai parādītu visas neredzamās rakstzīmes, kas, iespējams, apzīmē vagona atgriešanās vai bezpārtraukuma atstarpi.
2. iespēja: izmantojot VX komandu
Ja nevarat izmantot komandu cat, varat mēģināt izmantot vx komandu, lai skatītu un mainītu failā esošās komandas, veicot tālāk norādīto darbību. Ierakstiet sh –vx ./example.sh komandu terminālī, lai atvērtu failu.
3. iespēja: izmantojot komandu od –a
3. Ja komandrindās ir dažas neredzamas rakstzīmes, varat izmantot komandu od –a, lai skatītu failu. Ja faila saturs nav redzams koda failā, varat mēģināt nolasīt failu, izmantojot komandu od –piemērs.sh lai mainītu kodu.
II darbība: noņemiet Windows līnijas pārtraukumus
Ja čaulas skriptā ir Windows rindiņu pārtraukumi, varat izmantot konsoles komandas, lai noņemtu rindiņu pārtraukumus un kopētu koda rindas jaunā failā, lai labotu kļūdu.
Ievadiet šo komandu terminālī, lai saglabātu faila saturu citā failā ar nosaukumu labotspiemers.sh lai noņemtu Windows rindiņu pārtraukumus skriptā.
tr –d ‘\r’labotspiemers.sh
III darbība: iestatiet jaunizveidotā faila atļaujas
Jums ir jāiestata atļauja jaunizveidotajam failam, lai rediģētu failu, lai failu varētu izpildīt čaulā. Ierakstiet komandu kā chmod 755 labotspiemers.sh terminālī, lai nodrošinātu failam atļaujas un palaistu failu. Tagad varat skatīt izlaboto failu un novērst formatēšanas problēmas, kā arī izlabot sintakses kļūdu, kas atrodas failā neparedzēta marķiera tuvumā “(”.
IV darbība: formatējiet kodu failā
Otrais solis ir formatēt koda rindas atsevišķi un manuāli mainīt komandrindas failā. Faila formatēšanas opcijas, lai labotu sintakses kļūdu neparedzētā marķiera tuvumā “(”, ir apskatītas tālāk šajā sadaļā.
1. iespēja: aizstājiet vienas pēdiņas ar dubultpēdiņām
Ja komandrindās izmantojat vienas pēdiņas, lai labotu sintakses kļūdu, komanda ir jāmaina, aizstājot vienu pēdiņas ar dubultpēdiņām. Iekš piemērs.sh failu, noņemiet koda rindas, kurām ir ‘ un ’ vai atsevišķi pēdiņas komandā un aizstājiet vienas pēdiņas ar dubultpēdiņas vai “ un ’’. Šeit, piemēra failā, ir jāmaina kods kā str= “Skripta “\(piemēra faila)\” pirmā komandrinda”
Piezīme: Dubultās pēdiņas ir nepieciešamas parametru tipa komandām, piemēram, str= “[(1,2),(3,4)]”.
Lasi arī:20 labākie 2022. gada vieglie Linux izplatījumi
2. iespēja: pievienojiet $ virknes līnijām
Ja skriptam esat pievienojis virknes vērtības, virknes vērtībām jāpievieno $, lai labotu skripta sintakses kļūdu. Pievienojiet $ komandrindām ar virkne vērtības, lai labotu neparedzēto kļūdu. Šeit, piemēra failā, mainiet komandrindu kā;
str= $ '\(piemēra faila)\' pirmā komandrinda skriptā'
Piezīme: Ja jūs izmantojat $ virknes vērtībā varat apiet atpakaļvērstās slīpsvītras atkāpšanās secību, jo komandrindas atšifrē ANSI C standarts. Citiem vārdiem sakot, izmantojot $ virknes vērtībai, varat izvairīties no dubultpēdiņu izmantošanas, nevis vienpēdiņas komandrindās.
3. iespēja: pārveidojiet cilnes par atstarpes
Atstarpēm, ko atstājat starp diviem komandas priekšrakstiem, ir jābūt atstarpēm, nevis tabulēšanas zīmēm, lai labotu skripta sintakses kļūdu. Ja tiek parādīta kļūda vietnē Cygwin, varat mēģināt pārveidot kodos esošās cilnes par atstarpēm, lai labotu kļūdu. Komandrinda ir norādīta zemāk kā;
do echo command1; atbalss komanda2; atbalss komanda3; atbalss komanda4; darīts
Iepriekš minētā komanda ir jāpārraksta, kā parādīts tālāk, lai labotu kļūdu.
do echo command1; atbalss komanda2; atbalss komanda3; atbalss komanda4; darīts
4. iespēja: izmantojiet aizbēgšanas rakstzīmes
Ja izmantojat bash rakstzīmi, ir svarīgi izmantot atsoļa rakstzīmi kopā ar bash rakstzīmi, lai labotu sintakses kļūdu. The iekavās vai () ir bash speciālās rakstzīmes failā, tāpēc jums ir jāizmanto atsoļa rakstzīme vai slīpsvītra komandrindā, lai izvairītos no parastajām rakstzīmēm, lai izpildītu komandu. The str= 'Pirmā \'(piemēra faila)\' komandrinda skriptā' komanda terminālī neradītu kļūdu, jo tiek izmantota atsoļa rakstzīme.
Lasi arī: Kā nokļūt starp mums operētājsistēmā Linux
5. iespēja: izmantojiet atstarpi starp rakstzīmēm
Apvalka skripts atpazīst skripta komandas un paziņojumus pēc noklusējuma vērtībām. Jums ir jānodrošina pareiza atstarpes izmantošana starp rakstzīmēm, lai apvalks varētu identificēt skriptā doto komandu. Atstarpe ir rakstzīme, ko izmanto, lai komandrindā atšķirtu divas rakstzīmes. Kodā nav atstarpes starp ja un [, kas piešķir neparedzēto marķiera kļūdu kā ja[ komanda netiek identificēta pēc čaulas. Ja kods tiek mainīts uz ja [ $ diena == “mon” ]; tad kļūdu var atrisināt kā čaulas biļetena komandu ja tiek identificēts pēc apvalka.
6. iespēja: izmantojiet komandu atdalītāju priekšrakstiem
Dažādās komandas čaulas skriptā ir jāsadala paziņojumos, lai terminālis identificētu atsevišķas komandas. Lai labotu sintakses kļūdu Linux Bash, ir jāizmanto komandu atdalītājs. Paziņojumi komandā ir jāatdala ar komandas atdalītāju, piemēram, semikolu vai a ; vai jaunu rindu, nospiežot Ievadiet taustiņu. Piemēram, komanda kodā ja [ $ diena == “mon” ], tad ir jāmaina kā ja [ $ diena == “mon” ]; tad lai labotu kļūdu. Tā kā semikolu izmanto kā komandu atdalītāju starp rakstzīmēm [ un tad, varat labot šo kļūdu.
7. iespēja: noņemt papildu paziņojumus
Dažkārt, iespējams, esat pievienojis papildu paziņojumus vai sajaucis kodus vairāku ligzdotu cilpu gadījumā. Komandrindās ir jānoņem papildu paziņojumi, lai labotu sintakses kļūdu netālu no neparedzētā marķiera “(” operētājsistēmā Linux Bash. Bash cilpas par… izdarīts vai un konstrukciju konstrukcijas ja… fi ir jābūt pareizā sintakse. Piemēra failam ir nepareiza sintakse priekš cilpai ir termins tad kas tiek izmantots ja paziņojums, apgalvojums. Pārveidojot kodu kā šādu kodu, tiks novērsta neparedzētā marķiera kļūda. Paziņojums tad ir papildu paziņojums kodā, un, noņemot terminu, kļūda tiks novērsta.
VARIABLE in {0..2}; do echo command1; atbalss komanda2; atbalss komanda3; atbalss komanda4; darīts
8. iespēja: pārbaudiet, vai pārskatu slēgšanas secība ir pareiza
Ja čaulas skriptā izmantojat daudz ligzdotu vai nosacījumu konstrukcijas priekšrakstu, jums ir jānodrošina, lai cilpas tiktu aizvērtas tādā secībā, kādā tās tiek atvērtas. Varat izmantot jaunu rindu atdalītāju, lai izvairītos no konfliktiem ar cilpām. Ligzdoto cilpu un nosacījumu priekšrakstu aizvēršanas secībai ir jābūt pareizai, un to nedrīkst mainīt. Cilpas kodā kamēr patiesība; darīt, ja [ $ diena == “mon”]; tad atbalss "mon"; else atbalss "nav mon"; darīts; fi ir jāaizver pareizā secībā. Mainot kodu, kā parādīts tālāk, var novērst neparedzēto marķiera kļūdu, jo tiek labota priekšrakstu aizvēršanas secība.
kamēr patiesība; darīt, ja [ $ diena == “mon”]; tad atbalss "mon"; else atbalss "nav mon"; fi; darīts
Lasi arī:Kas ir komandrindas tulks?
2. metode: pārrakstīt kodu
Ja esat nokopējis kodu un ielīmējis to jaunā failā terminālī, varat mēģināt manuāli pārrakstīt kodu, lai labotu kļūdu. Kļūdas kodā var labot, ja esat ierakstījis kodu bez formāta kļūdām čaulas skriptā. Tas ir tāpēc, ka kļūdu var izraisīt slēptās rakstzīmes un formatēšanas problēmas teksta redaktorā, piemēram, Microsoft Word, ko izmantojāt koda kopēšanai un ielīmēšanai.
3. metode: izmantojiet komandu Dos2unix.exe
Ja izmantojat Unix operētājsistēmu, varat rakstīt kodus ar rindas plūsmas rakstzīmi kā \n lai pārietu uz nākamo faila rindiņu. Tomēr, ja izmantojat operētājsistēmu Windows, jums ir jāpāriet uz nākamo koda rindiņu, izmantojot vagona atgriešanu un rindas padevi vai \r\n failā. Ja izpildāt kodu, kas rakstīts Windows OS programmā Cygwin, iespējams, tiks parādīta sintakses kļūda neparedzēta marķiera tuvumā “(”.
Lai labotu kļūdu, jums ir jāizdzēš karietes atgriešanas rakstzīmes, izmantojot DOS uz Unix komandrindas rīks kā teksta faila formāta pārveidotājs. Ierakstiet šādu komandu kā dos2unix.exe example.sh terminālī, un jūs varat konvertēt failu Unix formātā.
Ieteicams:
- Kā izveidot telegrammas kontu operētājsistēmā Android
- Izlabojiet izpildlaika kļūdu C++ operētājsistēmā Windows 10
- Kā neatgriezeniski izdzēst Github kontu
- 14 labākās grafiskās kartes operētājsistēmai Linux
Rakstā ir apskatītas pamata metodes, kā novērst Bash sintakses kļūda neparedzēta marķiera tuvumā‘(’ scenārijā. Ja izmantojat Linux Bash, varat izmantot šajā sadaļā aprakstītās metodes, lai labotu Bash sintakses kļūdu neparedzētas pilnvaras tuvumā. Ja esat izlasījis visu rakstu un uzskatījis, ka saturs ir noderīgs, lūdzu, dariet mums zināmus savus ieteikumus un jautājumus komentāru sadaļā.