Bash - test sur le type d'une variable
Arrakis
-
Arrrakis Messages postés 17 Statut Membre -
Arrrakis Messages postés 17 Statut Membre -
Bonjour,
Je cherche a tester si une variable rentrée par l'utilisateur (read) est un entier de 4 digits.
ne fonctionne pas, alors qu 'un
fonctionne, je ne comprend pas trop.
merci de votre aide.
Je cherche a tester si une variable rentrée par l'utilisateur (read) est un entier de 4 digits.
if [ $var = [[:digit:]{4}] ]; then
...
ne fonctionne pas, alors qu 'un
grep [[:digit:]{4}] fichier
fonctionne, je ne comprend pas trop.
merci de votre aide.
Configuration: Linux Firefox 2.0.0.11
4 réponses
-
Lut'
Je n'y connais pas grand chose mais le ; après le if, il me choque.
if [ $var = [[:digit:]{4}] ]; then
Sur tous les scripts que j'ai vu, il n'yavait pas de point-virgule à cet endroit.
@ -
il y a un ; entre chaque mot clef
if [ $var = [[:digit:]{4}] ]; then
est équivalent a
if [ $var = [[:digit:]{4}] ]
then
Le problème vient de l'expression régulière. -
Ca peut résoudre ton problème avec une autre écriture :
#!/bin/bash
read var
if [[ "$var" == [0-9][0-9][0-9][0-9] ]]
then
echo "ok"
fi
avec le programme test, que tu invoque avec les crochets, il faut les doubler pour une expr
cordialement -
Bon j'ai trouvé, il manquait bien un = mais surtout je n'utilisait pas la bonne variable, y'avait une lettre de difference :D
comment perdre 2 heures...