Correction d’une erreur de syntaxe Bash près d’un jeton inattendu

Le codage dans le terminal Linux Bash est devenu une pratique prédominante dans le secteur du codage. Les ingénieurs logiciels et les étudiants qui apprennent le langage de codage rencontrent diverses erreurs. Si vous avez vu à plusieurs reprises des erreurs telles que Erreur de syntaxe près d’un jeton inattendu ‘(‘ ou Erreur de syntaxe Bash près d’un jeton inattendu, vous pouvez essayer de vous fier aux méthodes décrites dans l’article et devenir un codeur compétent. Lisez les méthodes décrites dans l’article du commande décrite et corrigez les erreurs dans les lignes de commande de votre fichier.

Comment réparer une erreur de syntaxe Bash près d’un jeton inattendu

Linux Bash est un interpréteur de ligne de commande pour le système basé sur Linux et remplace le Bourne Shell ou sh. Les fichiers sont nommés en utilisant le format .sh dans le script Linux Bash. S’il y a des problèmes de formatage dans le code du script shell, vous pouvez rencontrer une erreur de syntaxe. Si l’erreur est proche du caractère (, le shell vous indiquera l’erreur dans la ligne et affichera l’erreur dans la ligne correspondante. Comme Linux Bash est un interpréteur, la ligne avec l’erreur vous sera renvoyée dans le terminal et il arrêtera d’analyser le reste des commandes dans le script.Par conséquent, vous devez corriger l’erreur dans la ligne de commande particulière et passer à la suivante pour corriger l’erreur de jeton inattendue dans le script shell.Les causes de la syntaxe les erreurs proches du jeton inattendu dans Linux Bash sont répertoriées ci-dessous dans cette section comme ci-dessous :

  • Codage avec des séquences d’échappement – Si vous avez écrit les codes dans les scripts Bash, les séquences d’échappement ou les guillemets dans le script peuvent provoquer des erreurs. Les séquences d’échappement et les guillemets doivent être écrits dans le bon format pour corriger l’erreur.

  • Syntaxe incorrecte dans le fichier de codage – La syntaxe dans le code peut donner l’erreur de syntaxe si la commande est écrite dans la mauvaise syntaxe, comme changer l’ordre des boucles.

  • Mauvaise utilisation de la commande – Si vous n’utilisez pas la commande correctement, comme une affectation de valeur incorrecte, vous pouvez avoir une erreur de syntaxe.

  • Système d’exploitation incompatible dans les systèmes – Si le shell du script de codage n’est pas compatible entre les systèmes Unix et DOS, vous pouvez avoir une erreur inattendue.

  • Problèmes dans le script shell bash – Les problèmes qui s’exécutent dans le script shell bash sur le fichier copié à partir d’un autre système peuvent entraîner une erreur de jeton inattendue.

Considérez un fichier nommé example.sh créé dans le script Linux Bash avec les lignes de commande suivantes à des fins explicatives. Le fichier d’exemple offre des possibilités d’erreurs de syntaxe et inclut toutes les commandes possibles pouvant être utilisées dans le script 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

Méthode 1 : Correction manuelle des erreurs dans chaque ligne de commande

La première méthode pour corriger les erreurs consiste à corriger manuellement l’erreur de syntaxe dans chaque ligne de commande du script. Les étapes pour résoudre les erreurs de syntaxe près du jeton inattendu dans les lignes de commande sont décrites dans cette section. Le processus pour corriger l’erreur de jeton inattendue dans le terminal est décrit ci-dessous. Exécutez le fichier dans le terminal en tapant la commande ./example.sh et en appuyant sur la touche Entrée.

2. Notez les lignes contenant l’erreur de jeton inattendue dans les lignes de commande du résultat ci-dessous.

3. Corrigez l’erreur dans chaque ligne en suivant les méthodes décrites ci-dessous individuellement et en enregistrant le fichier.

4. Exécutez à nouveau le fichier après les modifications et vérifiez si l’erreur de syntaxe est résolue sur le fichier.

Étape I : lire le contenu du fichier

La première étape pour résoudre l’erreur de syntaxe dans les lignes de commande consiste à lire le fichier dans le terminal. S’il y a des problèmes avec le fichier, vous ne pourrez peut-être pas afficher le fichier. La pratique courante d’affichage du fichier consiste à exécuter le fichier à l’aide de la commande ./example.sh mais vous ne pouvez pas modifier le contenu du fichier. Les options permettant d’afficher le contenu du fichier et de modifier les lignes de commande pour corriger l’erreur de syntaxe près du jeton inattendu ‘(‘ sont décrites ci-dessous.

Option 1 : via la commande CAT

La première option consiste à utiliser la commande cat pour afficher le fichier dans le script shell. Lisez le contenu du fichier avec l’erreur de jeton inattendue à l’aide de la commande cat en tapant la commande cat –v example.sh dans le terminal.

Remarque 1 : L’exemple.sh est utilisé à des fins explicatives et vous devez taper le nom du fichier qui contient l’erreur de jeton inattendue.

Note 2 : La commande cat –v permet d’afficher tous les caractères invisibles susceptibles de représenter le retour chariot ou l’espace insécable.

Option 2 : via la commande VX

Si vous ne pouvez pas utiliser la commande cat, vous pouvez essayer d’utiliser la commande vx pour afficher et modifier les commandes sur le fichier en suivant l’étape ci-dessous. Tapez la commande sh –vx ./example.sh dans le terminal pour ouvrir le fichier.

Option 3 : via la commande od -a

3. S’il y a quelques caractères invisibles dans les lignes de commande, vous pouvez utiliser la commande od –a pour afficher le fichier. Si le contenu du fichier n’est pas visible dans le fichier de code, vous pouvez essayer de lire le fichier en utilisant la commande od –a example.sh pour modifier le code.

Étape II : supprimer les sauts de ligne Windows

S’il y a des sauts de ligne Windows dans le script shell, vous pouvez utiliser les commandes de la console pour supprimer les sauts de ligne et copier les lignes de code dans un nouveau fichier pour corriger l’erreur.

Entrez la commande suivante dans le terminal pour enregistrer le contenu du fichier dans un autre fichier nommé correctedexample.sh afin de supprimer les sauts de ligne Windows dans le script.

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

Étape 3 : Définir les autorisations pour le fichier nouvellement créé

Vous devez définir l’autorisation sur le fichier nouvellement créé pour modifier le fichier afin que le fichier puisse être exécuté dans le shell. Tapez la commande chmod 755 correctedexample.sh dans le terminal pour fournir les autorisations au fichier et exécuter le fichier. Vous pouvez maintenant afficher le fichier corrigé et résoudre les problèmes de formatage et corriger l’erreur de syntaxe près du jeton inattendu ‘(‘ dans le fichier.

Étape IV : formater le code dans le fichier

La deuxième étape consiste à formater les lignes de code individuellement et à modifier manuellement les lignes de commande sur le fichier. Les options de formatage du fichier pour corriger l’erreur de syntaxe près du jeton inattendu ‘(‘ sont décrites ci-dessous dans cette section.

Option 1 : Remplacer les guillemets simples par des guillemets doubles

Si vous utilisez des guillemets simples dans les lignes de commande, vous devez modifier la commande en remplaçant le guillemet simple par des guillemets doubles pour corriger l’erreur de syntaxe. Dans le fichier example.sh, supprimez les lignes de code qui ont ‘ et ‘ ou les guillemets simples dans la commande, et remplacez les guillemets simples par les guillemets doubles ou les  » et  ». Ici, dans le fichier d’exemple, vous devez modifier le code en tant que str = « Première ligne de commande de » (fichier d’exemple) « dans le script »

Remarque : Les guillemets doubles sont nécessaires pour les commandes de type paramètre telles que str= « [(1,2),(3,4)]”.

Option 2 : Ajouter $ aux lignes de chaîne

Si vous avez ajouté des valeurs de chaîne au script, vous devez ajouter un $ aux valeurs de chaîne pour corriger l’erreur de syntaxe dans le script. Ajoutez le $ pour les lignes de commande avec les valeurs de chaîne pour corriger l’erreur inattendue. Ici, dans le fichier d’exemple, modifiez la ligne de commande en tant que ;

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

Remarque : Si vous utilisez le signe $ dans la valeur de la chaîne, vous pouvez ignorer la séquence d’échappement de la barre oblique inverse car les lignes de commande sont décodées par la norme ANSI C. En d’autres termes, en utilisant un $ pour la valeur de chaîne, vous pouvez éviter d’utiliser les guillemets doubles au lieu des guillemets simples dans les lignes de commande.

Option 3 : convertir les onglets en espaces

Les espaces que vous avez laissés entre deux instructions dans la commande doivent être des espaces au lieu de tabulations pour corriger l’erreur de syntaxe dans le script. Si vous obtenez l’erreur sur Cygwin, vous pouvez essayer de convertir les onglets dans les codes en espaces pour corriger l’erreur. La ligne de commande est donnée ci-dessous comme;

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

La commande ci-dessus doit être réécrite comme indiqué ci-dessous pour corriger l’erreur.

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

Option 4 : Utiliser des caractères d’échappement

Si vous utilisez un caractère bash, il est important d’utiliser un caractère d’échappement avec le caractère bash pour corriger l’erreur de syntaxe. Les parenthèses ou () sont des caractères spéciaux bash dans le fichier, par conséquent, vous devrez utiliser le caractère d’échappement ou la barre oblique inverse dans la ligne de commande pour échapper aux caractères normaux pour exécuter la commande. La commande str= ‘Première ligne de commande de ‘(fichier d’exemple)’ dans le script’ ne donnerait pas d’erreur dans le terminal car les caractères d’échappement sont utilisés.

Option 5 : Utiliser des espaces entre les caractères

Le script shell reconnaît les commandes et les instructions du script par les valeurs par défaut. Vous devez vous assurer que l’espace entre les caractères est correctement utilisé afin que le shell puisse identifier la commande donnée dans le script. L’espace est un caractère utilisé pour différencier deux caractères dans la ligne de commande. Dans le code, il n’y a pas d’espace entre le if et [, 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” ]; alors l’erreur peut être résolue en utilisant la commande shell bulletin si elle est identifiée par le shell.

Option 6 : Utiliser le séparateur de commandes pour les instructions

Les différentes commandes du script shell doivent être séparées en instructions pour que le terminal puisse identifier les commandes individuelles. Vous devez utiliser un séparateur de commande pour corriger l’erreur de syntaxe dans Linux Bash. Les instructions de la commande doivent être séparées par un séparateur de commande tel qu’un point-virgule ou un ; ou une nouvelle ligne en appuyant sur la touche Entrée. Par exemple, la commande dans le code if [ $ day == “mon” ] doit alors être modifié comme si [ $ day == “mon” ]; puis pour corriger l’erreur. Étant donné que le point-virgule est utilisé comme séparateur de commande entre les caractères [ 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” ]; puis echo « lundi » ; sinon echo « pas mon » ; Fini; fi doit être fermé dans le bon ordre. La modification du code comme indiqué ci-dessous peut corriger l’erreur de jeton inattendue car l’ordre de fermeture des instructions est corrigé.

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

Méthode 2 : réécrire le code

Si vous avez copié le code et l’avez collé dans un nouveau fichier sur le terminal, vous pouvez essayer de réécrire le code manuellement pour corriger l’erreur. Les erreurs dans le code peuvent être corrigées si vous avez écrit le code sans aucune erreur de format dans le script shell. En effet, les caractères masqués et les problèmes de formatage dans l’éditeur de texte tel que Microsoft Word, que vous avez peut-être utilisés pour copier et coller le code, peuvent avoir généré l’erreur.

Méthode 3 : Utiliser la commande Dos2unix.exe

Si vous utilisez un système d’exploitation Unix, vous pouvez écrire des codes avec le caractère de saut de ligne comme n pour passer à la ligne suivante dans le fichier. Cependant, si vous utilisez un système d’exploitation Windows, vous devez passer à la ligne suivante dans le code en utilisant le retour chariot et le saut de ligne ou le rn dans le fichier. Si vous exécutez le code écrit dans le système d’exploitation Windows dans Cygwin, vous pouvez obtenir l’erreur de syntaxe près du jeton inattendu ‘(‘.

Pour corriger l’erreur, vous devez effacer les caractères de retour chariot à l’aide de l’outil de ligne de commande DOS vers Unix en tant que convertisseur de format de fichier texte. Tapez la commande suivante en tant que dos2unix.exe example.sh dans le terminal et vous pourrez convertir le fichier au format Unix.

***

L’article a décrit les méthodes de base pour corriger l’erreur de syntaxe Bash près du jeton inattendu ‘(‘ dans le script. Si vous utilisez un Bash Linux, vous pouvez utiliser les méthodes expliquées dans cette section pour corriger l’erreur de syntaxe Bash près du jeton inattendu. Si vous avez lu l’intégralité de l’article et trouvé le contenu utile, veuillez nous faire part de vos suggestions et questions dans la section des commentaires.