test - integer expression expected

J'ai récemment été confronté à l'erreur "integer expression expected" lors d'un test de deux entiers dans un de mes scripts.

Après plusieurs tests, j'ai finalement compris d'où venait mon erreur.
La variable que je testais ne contenait pas que des chiffres.
Elle n'était donc pas reconnue comme un entier.

Un simple "echo" de ma variable ne faisait pas apparaître tous les caractères de celle-ci.
Pour m'en apercevoir, j'ai dû utiliser la commande "od".

Exemple :

Je vais générer volontairement une erreur au niveau du contenu de la variable à tester en y insérant un caractère spécifique.

$ a=$(echo -e "20\a")
$ echo $a
20

La commande "echo" ne fait pas apparaitre le caractère spécifique contenu dans ma variable.

Je test si ma variable est égale à 20 (par exemple).

$ test $a -eq 20
-bash: test: 20: integer expression expected

J'ai bien une erreur car effectivement ma variable ne peut pas être considérée comme un entier à cause du caractère spécifique qu'elle contient.

La preuve avec la commande "od -c" ...

$ echo -n $a | od -c
0000000   2   0  \a

... le caractère spécifique "\a" apparait bien.

En conclusion, penser à bien vérifier le contenu des variables avec la commande "od" pour voir si des caractères spécifiques ne s'y sont pas insérés.

Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.