Bash - test sur le type d'une variable

Arrakis -  
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.

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

  1. Keff Messages postés 327 Statut Membre 120
     
    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
  2. Arrrakis Messages postés 17 Statut Membre 3
     
    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
  3. jj
     
    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
  4. Arrrakis Messages postés 17 Statut Membre 3
     
    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