Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Jetons manquants ou inattendus

Une autre erreur courante consiste à oublier de terminer une commande composée, telle que if or tout en. Regardons ce qui se passe si nous supprimons le point-virgule après le tester dans le if commander:



#! / Bin / bash


# problème : script pour démontrer les erreurs courantes number=1

si [ $nombre = 1 ] alors

echo "Le nombre est égal à 1." autre

echo "Le nombre n'est pas égal à 1."

fi

#! / Bin / bash


# problème : script pour démontrer les erreurs courantes number=1

si [ $nombre = 1 ] alors

echo "Le nombre est égal à 1." autre

echo "Le nombre n'est pas égal à 1."

fi


Le résultat est celui-ci :



[moi@linuxbox ~]$ difficulté

/home/me/bin/trouble : ligne 9 : erreur de syntaxe près du jeton inattendu

"autre"

/home/me/bin/trouble: ligne 9: `else'

[moi@linuxbox ~]$ difficulté

/home/me/bin/trouble : ligne 9 : erreur de syntaxe près du jeton inattendu

"autre"

/home/me/bin/trouble: ligne 9: `else'


Encore une fois, le message d'erreur indique une erreur qui se produit plus tard que le problème réel. Ce qui se passe est vraiment très intéressant. Comme nous le rappelons, if accepte une liste de commandes et évalue le code de sortie de la dernière commande de la liste. Dans notre programme, nous avons l'intention que cette liste se compose d'une seule commande, [, synonyme de test. Les [ la commande prend ce qui la suit comme une liste d'arguments ; dans notre cas, quatre arguments : $ nombre, 1, =et une ]. Une fois le point-virgule supprimé, le mot puis est ajouté à la liste des arguments, ce qui est syntaxiquement légal. Ce qui suit echo la commande est également légale. Elle est interprétée comme une autre commande dans la liste des commandes qui if évaluera pour un code de sortie. Les d'autre est rencontré ensuite, mais ce n'est pas à sa place, puisque le shell le reconnaît comme un mot reservé (un mot qui a une signification particulière pour le shell) et non le nom d'une commande, d'où le message d'erreur.


Meilleur système d'exploitation Cloud Computing chez OnWorks :