Bash - test sur le type d'une variable

Fermé
Arrakis - 21 déc. 2007 à 13:40
Arrrakis Messages postés 16 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 28 novembre 2008 - 21 déc. 2007 à 14:26
Bonjour,

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.
A voir également:

4 réponses

Keff Messages postés 304 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 22 septembre 2009 120
21 déc. 2007 à 13:44
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.

@
0
Arrrakis Messages postés 16 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 28 novembre 2008 3
21 déc. 2007 à 13:49
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.
0
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
0
Arrrakis Messages postés 16 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 28 novembre 2008 3
21 déc. 2007 à 14:26
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...
0