Shell - Tester une variable numérique

introduction

Dans un "shell", les variables sont du type "chaîne" (par défaut). Cela implique-t-il que vous ne pouvez pas déclarer une variable du type "entier"?

Eh bien, ce n'est pas tout à fait vrai!

Exemples de test

Voici trois tests qui utilisent les commandes suivantes, associées à des instructions de contrôle, telles que le code de retour d’une commande.

  • grep
  • expr
  • tester"

Remarque: Dans les exemples ci-dessous, nous supposerons que la variable $ var est initialisée conformément au paramètre "$ 1", transmis directement dans la ligne de commande à la suite de l'appel de chaque script.

Utiliser grep

Remarque: Dans l'exemple suivant, l'expression "[[: digit:]]" doit être écrite sans espaces entre doubles crochets.

 #! / bin / bash # script_grep.sh var = $ 1 si ["$ (echo $ var | grep" ^ [[: digit:]] * $ ")"] puis echo "la chaîne ins numeric" fi 

Utiliser expr

Basé sur le code de retour (ici dans la variable $ statut) après un test sur une opération arithmétique à l'aide de la commande "expr".

 #! / bin / sh # script_expr.sh var = $ 1 expr $ var + 0 1> / dev / null 2> & 1 statut = $? si test $ statut -lt 2 alors echo "$ var" numeric fi 

Utiliser Test

Basé sur l'utilisation de la commande "test" (représentée ici "[" et "]"). Vérifiez si la valeur de la variable $ va est zéro (0), puis évalue le code de retour ($?) Pour ses deux états de sortie (vrai ou faux, c'est-à-dire 0 ou 1). Si le code de retour est supérieur à 1, l'évaluation a échoué.

 #! / bin / bash # script_test.sh var = $ 1 [$ var -eq 0] 2> / dev / null si [$? -qq 0 -o $? -eq 1] alors echo "La chaîne est numérique" fi 

Variable de type entier

Vous pouvez également initialiser une variable de type "entier" via le shell "POSIX".

Pour créer une variable de type entier, déclarez-la d'abord avec la commande "typeset -i" ou "let".

Voici un exemple qui implémente l'utilisation de la commande "let":

 #! / bin / sh # script_let.sh var = $ 1 si let $ var 2> / dev / null alors echo "$ var numeric" sinon echo "$ var non numérique" fi 

Notez que la ligne " if let $ var 2> / dev / null " peut aussi s'écrire:

  •  si let 2> / dev / null 

ou

  •  if ((var)) 2> / dev / null 

Article Précédent Article Suivant

Les Meilleurs Conseils