While condition chaine de caractère

Fermé
medou922 Messages postés 3 Date d'inscription jeudi 13 février 2020 Statut Membre Dernière intervention 19 février 2020 - Modifié le 19 févr. 2020 à 17:14
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 19 févr. 2020 à 17:37
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,
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
19 févr. 2020 à 17:37
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