329 votes

Erreur "opérateur unaire attendu" dans la condition "if" de Bash

Ce script obtient une erreur :

elif [ $operation = "man" ]; then
    if [ $aug1 = "add" ]; then         # <- Line 75
    echo "Man Page for: add"
    echo ""
    echo "Syntax: add [number 1] [number 2]"
    echo ""
    echo "Description:"
    echo "Add two different numbers together."
    echo ""
    echo "Info:"
    echo "Added in v1.0"
    echo ""
elif [ -z $aug1 ]; then
    echo "Please specify a command to read the man page."
else
    echo "There is no manual page for that command."
fi

Je reçois cette erreur :

calc_1.2: line 75: [: =: unary operator expected

4 votes

Je pense que votre if à la ligne 75 a besoin d'un fi .

9 votes

En cas de doute, citez les vars.

13 votes

@koola, vars de citation 'toujours'.

-14voto

el guesto Points 1

Vous pouvez également définir une valeur par défaut pour la variable, de sorte que vous n'avez pas besoin d'utiliser deux "[", ce qui équivaut à deux processus ("[" est en fait un programme) au lieu d'un seul.

Ça se passe avec cette syntaxe : ${VARIABLE:-default}.

L'ensemble doit être pensé de manière à ce que cette valeur "par défaut" soit distincte d'une valeur/contenu "valide".

Si ce n'est pas possible pour une raison quelconque, vous devez probablement ajouter une étape comme la vérification de l'existence d'une valeur, du type "if [ -z $VARIABLE ] ; then echo "la variable doit être remplie"", ou "if [ ! -z $VARIABLE ] ; then #tout va bien, continuez avec le reste du script".

4 votes

[[ ne génère pas deux processus, il s'agit d'une fonction intégrée à l'interpréteur de commandes (et la fonction [ est également une fonction intégrée de Bash). [[ est différent de [ [ qui traite le second [ comme une chaîne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X