While condition chaine de caractère

medou922 Messages postés 3 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Pouvez-vous m'aider ?
Jécris une boucle while qui vérifie que la variable n'est pas vide, et que la variable ne contient pas de chiffre ( est bien une chaine de caractère)

Voici mon script :

 #! /bin/bash
  2
  3                 echo ""
  4                 echo "***** Saisie des initiales *****"
  5                 echo ""
  6                 echo "Veuillez saisir vos initiales"
  7                 read reponse
  8                 while [[ -z ${reponse} ]] && [[ ${reponse} = ~^[-+]?[0-9]*$ ]]
  9                 do
 10                         echo "Veuillez rentrer des initiales valides"
 11                 read reponse
 12 done
 13 if [[ -n ${reponse} ]];
 14 then
 15
 16                         G_INITIALES_IDENTIFICATION=$reponse
 17
 18 echo "Installation effectuée par $G_INITIALES_IDENTIFICATION"
 19
 20 fi


La condition que je saisie pour vérifier que la variable n'est pas compris entre 0 et 9 ne fonctionne pas.
Aurez-vous des suggestions svp ?

Merci d'avance pour votre aide.

Cordialement,

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Il ne faut pas se tromper sur l'évaluation (ET/OU) ;-\
    Dans ton cas c'est OU ( || ) et non pas ET ( && ).

    Et attention à la syntaxe ! Il ne faut pas d'espace entre "=" et "~" ;-(

    #! /bin/bash
    
    echo ""
    echo "***** Saisie des initiales *****"
    echo ""
    echo "Veuillez saisir vos initiales"
    read reponse
    
    regex="^[-+]?[0-9]*$"
    
    while [[ -z ${reponse} ]] || [[ ${reponse} =~ ${regex} ]]
    do
             echo "Veuillez rentrer des initiales valides"
             read reponse
    done
    
    if [[ -n ${reponse} ]];
    then
    	G_INITIALES_IDENTIFICATION="${reponse}"
    	echo "Installation effectuée par ${G_INITIALES_IDENTIFICATION}"
    fi

    0