Correggi l’errore di sintassi di Bash vicino al token imprevisto

La codifica nel Linux Bash Terminal è diventata una pratica predominante nel settore della codifica. Gli ingegneri del software e gli studenti che imparano il linguaggio di programmazione incontrano vari errori. Se hai visto ripetutamente errori come Errore di sintassi vicino al token imprevisto ‘(‘ o Errore di sintassi Bash vicino al token imprevisto, puoi provare a fare affidamento sui metodi descritti nell’articolo e diventare un programmatore esperto. Leggi i metodi descritti nell’articolo nel ordine descritto e correggere gli errori nelle righe di comando sul file.

Come correggere l’errore di sintassi di Bash vicino a un token imprevisto

Linux Bash è un interprete della riga di comando per il sistema basato su Linux ed è un sostituto di Bourne Shell o sh. I file sono denominati utilizzando il formato .sh nello scripting di Linux Bash. Se ci sono problemi di formattazione nel codice nello script della shell, potresti riscontrare un errore di sintassi. Se l’errore è vicino al carattere (, la shell ti chiederà l’errore nella riga e visualizzerà l’errore nella riga corrispondente. Poiché Linux Bash è un interprete, la riga con l’errore ti verrà restituita in il Terminale e interromperà la scansione del resto dei comandi nello script.Quindi, è necessario correggere l’errore nella riga di comando particolare e passare alla successiva per correggere l’errore del token imprevisto nello script della shell.Le cause della sintassi l’errore vicino al token imprevisto in Linux Bash è elencato di seguito in questa sezione come di seguito:

  • Codifica con sequenze di escape: se hai scritto i codici nello script Bash, le sequenze di escape o le virgolette nello script potrebbero causare errori. Le sequenze di escape e le virgolette devono essere scritte nel formato corretto per correggere l’errore.

  • Sintassi errata nel file di codifica: la sintassi nel codice potrebbe fornire l’errore di sintassi se il comando è scritto con una sintassi errata, ad esempio la modifica dell’ordine dei loop.

  • Utilizzo errato del comando: se non si utilizza il comando correttamente, ad esempio un’assegnazione di valori errata, è possibile che si verifichi un errore di sintassi.

  • Sistema operativo incompatibile nei sistemi: se la shell per lo script di codifica non è compatibile tra i sistemi Unix e DOS, è possibile che si verifichi un errore imprevisto.

  • Problemi nello script della shell bash: i problemi in esecuzione nello script della shell bash sul file copiato da un altro sistema possono dare l’errore di token imprevisto.

Si consideri un file denominato example.sh creato nello script Bash di Linux con le seguenti righe di comando a scopo esplicativo. Il file di esempio ha la possibilità di errori di sintassi e include tutti i possibili comandi che possono essere utilizzati nello script della shell.

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

Metodo 1: correzione manuale degli errori in ciascuna riga di comando

Il primo metodo per correggere gli errori consiste nel correggere manualmente l’errore di sintassi in ciascuna riga di comando nello script. I passaggi per risolvere gli errori di sintassi vicino al token imprevisto nelle righe di comando sono discussi in questa sezione. Il processo per correggere l’errore di token imprevisto nel Terminale è descritto di seguito. Esegui il file nel Terminale digitando il comando ./example.sh e premendo il tasto Invio.

2. Prendere nota delle righe che presentano l’errore di token imprevisto nelle righe di comando sul risultato seguente.

3. Correggere l’errore in ogni riga seguendo singolarmente i metodi discussi di seguito e salvando il file.

4. Eseguire nuovamente il file dopo le modifiche e verificare se l’errore di sintassi è stato risolto sul file.

Passaggio I: leggi il contenuto del file

Il primo passo per risolvere l’errore di sintassi nelle righe di comando è leggere il file nel Terminale. SE ci sono problemi con il file, potresti non essere in grado di visualizzare il file. La pratica regolare di visualizzazione del file consiste nell’eseguire il file utilizzando il comando ./example.sh ma non è possibile modificare il contenuto del file. Le opzioni per visualizzare il contenuto del file e modificare le righe di comando per correggere l’errore di sintassi vicino al token imprevisto ‘(‘ sono discusse di seguito.

Opzione 1: tramite comando CAT

La prima opzione consiste nell’usare il comando cat per visualizzare il file nello script della shell. Leggi il contenuto del file con l’errore token imprevisto usando il comando cat digitando il comando cat –v example.sh nel Terminale.

Nota 1: example.sh viene utilizzato a scopo esplicativo ed è necessario digitare il nome del file con l’errore di token imprevisto.

Nota 2: il comando cat –v viene utilizzato per visualizzare tutti i caratteri invisibili che potrebbero rappresentare il ritorno a capo o lo spazio senza interruzioni.

Opzione 2: tramite il comando VX

Se non puoi utilizzare il comando cat, puoi provare a utilizzare il comando vx per visualizzare e modificare i comandi sul file utilizzando il passaggio indicato di seguito. Digita il comando sh –vx ./example.sh nel Terminale per aprire il file.

Opzione 3: tramite od –a Command

3. Se sono presenti alcuni caratteri invisibili nelle righe di comando, è possibile utilizzare il comando od –a per visualizzare il file. Se il contenuto del file non è visibile nel file di codice, puoi provare a leggere il file utilizzando il comando od –a example.sh per modificare il codice.

Passaggio II: rimuovere le interruzioni di riga di Windows

Se sono presenti interruzioni di riga di Windows nello script della shell, è possibile utilizzare i comandi della console per rimuovere le interruzioni di riga e copiare le righe di codice in un nuovo file per correggere l’errore.

Immettere il comando seguente nel Terminale per salvare il contenuto del file in un altro file denominato correctedexample.sh per rimuovere le interruzioni di riga di Windows nello script.

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

Passaggio III: imposta le autorizzazioni sul file appena creato

È necessario impostare l’autorizzazione sul file appena creato per modificare il file in modo che il file possa essere eseguito nella shell. Digita il comando come chmod 755 correctedexample.sh nel Terminale per fornire le autorizzazioni al file ed eseguire il file. Ora puoi visualizzare il file corretto e correggere i problemi di formattazione e correggere l’errore di sintassi vicino al token imprevisto ‘(‘ nel file.

Passaggio IV: formattare il codice nel file

Il secondo passaggio consiste nel formattare le righe di codice individualmente e modificare manualmente le righe di comando sul file. Le opzioni per formattare il file per correggere l’errore di sintassi vicino al token imprevisto ‘(‘ sono discusse di seguito in questa sezione.

Opzione 1: sostituisci virgolette singole con virgolette doppie

Se si utilizzano le virgolette singole nelle righe di comando, è necessario modificare il comando sostituendo le virgolette singole con le virgolette doppie per correggere l’errore di sintassi. Nel file example.sh, rimuovi le righe di codice che contengono ‘ e ‘ o le virgolette singole nel comando e sostituisci le virgolette singole con le virgolette doppie o ” e ”. Qui, nel file di esempio, è necessario modificare il codice come str= “Prima riga di comando di “(file di esempio)” nello script”

Nota: le virgolette doppie sono necessarie per i comandi del tipo di parametro come str= “[(1,2),(3,4)]”.

Opzione 2: aggiungi $ alle linee di stringa

Se hai aggiunto valori di stringa allo script, devi aggiungere un $ ai valori di stringa per correggere l’errore di sintassi nello script. Aggiungi $ per le righe di comando con i valori di stringa per correggere l’errore imprevisto. Qui, nel file di esempio, cambia la riga di comando come;

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

Nota: se si utilizza $ nel valore della stringa, è possibile ignorare la sequenza di escape della barra rovesciata poiché le righe di comando vengono decodificate dallo standard ANSI C. In altre parole, utilizzando un valore $ per stringa, puoi evitare di usare le virgolette doppie invece delle virgolette singole nelle righe di comando.

Opzione 3: converti le schede in spazi

Gli spazi che hai lasciato tra due istruzioni nel comando devono essere spazi anziché tab per correggere l’errore di sintassi nello script. Se ricevi l’errore su Cygwin, puoi provare a convertire le schede nei codici in spazi per correggere l’errore. La riga di comando è indicata di seguito come;

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

Il comando precedente dovrebbe essere riscritto come mostrato di seguito per correggere l’errore.

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

Opzione 4: usa i caratteri di escape

Se stai usando un carattere bash, è importante usare un carattere di escape insieme al carattere bash per correggere l’errore di sintassi. Le parentesi o () sono caratteri speciali bash nel file, quindi è necessario utilizzare il carattere di escape o la barra rovesciata nella riga di comando per eseguire l’escape dei caratteri normali per eseguire il comando. Il comando str= ‘Prima riga di comando di ‘(file di esempio)’ nello script’ non darebbe un errore nel Terminale poiché vengono utilizzati i caratteri di escape.

Opzione 5: usa lo spazio tra i caratteri

Lo script della shell riconosce i comandi e le istruzioni nello script in base ai valori predefiniti. È necessario garantire il corretto utilizzo dello spazio tra i caratteri in modo che la shell possa identificare il comando fornito nello script. Lo spazio è un carattere utilizzato per differenziare due caratteri nella riga di comando. Nel codice non c’è spazio tra if e [, 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” ]; quindi l’errore può essere risolto come comando del bollettino della shell se viene identificato dalla shell.

Opzione 6: utilizzare il separatore di comandi per le istruzioni

I vari comandi nello script della shell devono essere separati in istruzioni affinché il Terminale possa identificare i singoli comandi. È necessario utilizzare un separatore di comandi per correggere l’errore di sintassi in Linux Bash. Le istruzioni nel comando devono essere separate da un separatore di comando come un punto e virgola o un ; o una nuova riga premendo il tasto Invio. Ad esempio, il comando nel codice if [ $ day == “mon” ] quindi deve essere modificato come se [ $ day == “mon” ]; quindi per correggere l’errore. Poiché il punto e virgola viene utilizzato come separatore di comando tra i caratteri [ 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” ]; poi eco “mon”; altrimenti fa eco “non mon”; fatto; fi deve essere chiuso nell’ordine corretto. La modifica del codice come mostrato di seguito può correggere l’errore di token imprevisto poiché l’ordine di chiusura delle istruzioni viene corretto.

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

Metodo 2: riscrivi il codice

Se hai copiato il codice e incollato in un nuovo file sul Terminale, puoi provare a riscrivere il codice manualmente per correggere l’errore. Gli errori nel codice possono essere corretti se hai scritto il codice senza errori di formato nello script della shell. Questo perché i caratteri nascosti e i problemi di formattazione nell’editor di testo come Microsoft Word, che potresti aver usato per copiare e incollare il codice, potrebbero aver dato l’errore.

Metodo 3: utilizzare il comando Dos2unix.exe

Se stai usando un sistema operativo Unix, puoi scrivere codici con il carattere di avanzamento riga come n per passare alla riga successiva nel file. Tuttavia, se si utilizza un sistema operativo Windows, è necessario spostarsi alla riga successiva nel codice utilizzando il ritorno a capo e l’avanzamento riga o rn nel file. Se esegui il codice scritto nel sistema operativo Windows in Cygwin, potresti ricevere l’errore di sintassi vicino al token imprevisto ‘(‘.

Per correggere l’errore, è necessario cancellare i caratteri di ritorno a capo utilizzando lo strumento da riga di comando da DOS a Unix come convertitore di formato di file di testo. Digita il seguente comando come dos2unix.exe example.sh nel Terminale e puoi convertire il file nel formato Unix.

***

L’articolo ha discusso i metodi di base per correggere l’errore di sintassi di Bash vicino al token imprevisto ‘(‘ nello script. Se stai utilizzando un Bash Linux, puoi utilizzare i metodi spiegati in questa sezione per correggere l’errore di sintassi di Bash vicino al token imprevisto. Se lo fai dopo aver letto l’intero articolo e trovato utile il contenuto, fateci sapere i vostri suggerimenti e domande nella sezione commenti.