Résoudre l'émission Bash Operator Unary attendu

Résoudre l'émission Bash Operator Unary attendu
Les erreurs ont un nombre divers de types et de raisons en matière de programmation bash. L'une de ces erreurs est l'erreur «l'opérateur unaire attendu» dans la programmation bash. Lors de l'évaluation des expressions dans les déclarations conditionnelles, vous pouvez rencontrer le problème de «l'opérateur unaire attendu». Les raisons de cette erreur «Bash Operator Unary attendu» pourraient être diverses. Nous allons commencer par parler de ce qui crée le problème. Après cela, nous allons passer en revue quelques options pour résoudre ce problème. Commençons par l'article d'aujourd'hui en créant un nouveau fichier bash dans Ubuntu 20.04 Système. Pour cela, nous devons utiliser l'instruction «toucher» dans le terminal de la coquille et nommer le fichier «Unary.sh ”. $ Touch Unary.shot
$ nano unary.shot

Exemple

Nous commencerons notre premier exemple pour cet article en créant un nouveau code bash dans le «Unary.fichier sh ”. Nous utiliserons l'énoncé conditionnel pour l'illustration de cette erreur. Dans ce fichier de code, nous avons ajouté le support bash à la première ligne comme «#!/ bac / bash ». Nous essayons l'instruction de lecture pour prendre les commentaires de l'utilisateur avec l'option «-p» et ajouter cette entrée dans la variable «V."La déclaration IF-Else est là pour vérifier la condition. Il vérifie si la valeur saisie par un utilisateur en variable «V» est égale au nombre 14 ou non. Pour vérifier l'égalité, nous utilisons l'opérateur de comparaison «-EQ». Si la valeur ajoutée par un utilisateur est égalée par le numéro 14, la partie «alors» affiche la «valeur correspondante» à l'aide d'une clause «Echo». Sinon, la partie ELSE va exécuter son instruction «Echo» affichant le message «valeur non correspondant» au shell. Le code est complet ici, et nous pouvons l'exécuter maintenant.

Après avoir enregistré le code bash, nous l'avons exécuté avec l'instruction bash. Il s'avère qu'il demande l'entrée de l'utilisateur. Un utilisateur a ajouté la valeur «67» sur le terrain et appuyé sur Entrée. Comme la valeur ne correspond pas à la valeur spécifiée dans la condition «IF», ​​la pièce «else» a été exécutée et affichée «valeur non correspondante», comme présenté dans la sortie illustrée ci-dessous.

$ bash unary.shot

Il s'agissait de l'utilisation d'une valeur numérique pour effectuer la comparaison. Exécutons à nouveau notre code pour que cela se produise l'erreur «opérateur unaire attendu» sur notre shell. Ainsi, nous avons de nouveau essayé le code, et sur le champ de saisie demandant une valeur à saisir, nous n'avons rien entré (nous l'avons laissé vide) et avons appuyé sur le bouton «Entrer» pour continuer. Tout d'un coup, il nous donne l'erreur «opérateur unary attendu» à la ligne 3 du code. Après cela, il a simplement affiché le message «valeur non appariée» en utilisant la partie else de la condition mentionnée dans le code.

$ bash unary.shot

Bien que nous ayons rencontré l'erreur «opérateur unaire attendu» dans la zone de sortie du terminal, nous ne pouvons pas reconnaître la raison principale de cette erreur. Pour trouver la raison principale de ce problème, nous devons déboguer le code de fichier bash. Pour cela, nous devons utiliser l'option «-xv» dans l'instruction BASH suivie du nom du fichier à commencer par. "/" comme montré. Il déboguera chaque ligne de notre code et affichera également la ligne d'erreur. Il montre que la ligne d'erreur est «[-eq 14]». Il ne montre pas le «$ v» comme nous l'avons spécifié dans le code. La raison de cette erreur est que l'utilisation de l'espace fera l'expression du côté gauche, je.e., «$ V», disparaît de la condition.

$ bash -xv ./ unary.shot

Pour empêcher ce script de lancer l'erreur «l'opérateur unaire attendu» sur Bash, nous devons à nouveau mettre à jour le code. Nous devons ajouter les doubles devis autour de l'expression gauche «$ v», comme nous l'avons fait dans l'image ci-dessous. Le reste du code sera inchangé pour l'instant. Maintenant, le code est prêt à l'usage. Nous devons d'abord l'enregistrer avec «Ctrl + S» et quitter le fichier avec «Ctrl + x."

Après l'exécution du fichier bash mis à jour avec la requête bash, l'utilisateur a à nouveau appuyé sur Entrée sans saisir de valeur dans le champ de saisie devant le texte «Entrez quelque chose». Maintenant, l'erreur attendue de l'opérateur unary a été supprimée, mais une autre erreur, "Integer Expression attendue", est apparue. Mais il montre également le message d'affichage selon lequel la valeur saisie par un utilisateur ne correspond pas au numéro 14. Donc, nous devons découvrir la solution pour cette erreur.

$ bash unary.shot

Comme nous le savons, nous utilisons l'opérateur de comparaison «-eq» pour comparer certaines valeurs avec l'entier 14. Il lancera une exception car l'opérateur de comparaison «-EQ» n'est conçu et utilisé que pour la comparaison des valeurs ou des variables de chaîne. Pour comparer les nombres d'entiers dans Bash, nous devons utiliser l'opérateur d'attribution «=» pour vérifier si les deux valeurs sont égales ou non. Enregistrons ce code mis à jour pour voir le résultat.

Après cette exécution de code bash mise à jour, l'utilisateur n'a à nouveau rien entré et a simplement appuyé sur «Entrer» pour continuer. Cette fois, nous n'avons aucune erreur. Cela est dû à l'utilisation de l'opérateur «=». En retour, il a exécuté la clause «else» et affiché un message «valeur non appariée».

$ bash unary.shot

Une autre façon d'éviter de rencontrer l'erreur attendue de l'opérateur unaire sur notre coquille de terminal consiste à utiliser les supports «carrés» doubles au début et à la fin de la condition «IF» tout en utilisant l'opérateur de comparaison «-eq» pour tout type de valeur. Donc, nous l'avons fait comme indiqué ci-dessous.

Après avoir appuyé sur «Entrée», l'utilisateur n'a pas d'erreur lors de l'exécution.

$ bash unary.shot

Conclusion

Il s'agit de l'utilisation de différentes méthodes pour résoudre l'erreur bash «l'opérateur unaire attendu.«Ce faisant, nous avons rencontré une autre erreur,« Expression entière attendue », et nous l'avons également résolu. Vous pouvez modifier l'exemple ci-dessus et résoudre votre erreur bash.