Bash: comparaison

gardiendelanuit Messages postés 1854 Statut Membre -  
gardiendelanuit Messages postés 1854 Statut Membre -
Bonjour,

Hé oui encore un problème ce soir: je veux vérifier (en bash) si la personne ne s'est pas trompée de frappe: 0 pour oui et 1 pour non par exemple.

En effet j'ai testé plusieurs bricoles puisque les principales ne marchaient pas car le =! semble comparer des lettres et -ne des chiffres...
Seulement voilà si jamais l'utilisateur tape un "a" au lieu d'un "1" ... comment le vérifier?

Merci d'avance pour vos réponses :)



A voir également:

6 réponses

gardiendelanuit Messages postés 1854 Statut Membre 264
 
PS: j'obtiens un [: g: integer expression expected ou encore le unary operator expected ...
0
flav1313 Messages postés 812 Statut Membre 100
 
if élémentTapéAuClavier != [0-9]
action
else action

Nan?
0
flav1313 Messages postés 812 Statut Membre 100
 
enfin remplacer [0-9] par [0-1]
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Merci de ta réponse.
J'avais fait un truc de ce genre mais peut-être pas tourné de cette maniere, je vais voir.. :)
0
flav1313 Messages postés 812 Statut Membre 100
 
Si tu veux que l'utilisateur ne rentre que 0 ou 1, utilise cette méthode =). Ou sinon
If élément -eq 1
else
if élément -eq 0
else
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
redirection='0'

echo -e "Tapez ${rougefonce}0${neutre} pour entrer un lien ou ${jaune}1${neutre} pour traiter les liens du fichier \"link\""
	
	read redirection

while [ $redirection =! "[0-1]" ] #Vérification si le choix est correct
do
		echo -e "Entrez ${rougefonce}0${neutre} ou ${jaune}1${neutre}!"
		read redirection
	
done


Toujours le même problème : /

Même avec =! '[0-1]' si on tape une lettre ca ne marche pas
0
flav1313 Messages postés 812 Statut Membre 100
 
essaye avec :

redirection=0 

echo -e "Tapez ${rougefonce}0${neutre} pour entrer un lien ou ${jaune}1${neutre} pour traiter les liens du fichier \"link\"" 
  
 read redirection 

while [ $redirection =! [0-1] ] #Vérification si le choix est correct 
do 
  echo -e "Entrez ${rougefonce}0${neutre} ou ${jaune}1${neutre}!" 
  read redirection 
  
done
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
./BASHv10.0.sh: line 19: [: =!: binary operator expected
: / avec une lettre ou un chiffre pareil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

Voir dans la FAQ : Shell - Tester une variable numérique

;-))
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Je vois ce que ces bouts de code font mais je ne sais pas comment m'en servir pour les mettres dans un while...
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Parce que je vérifie si la variable est de type numérique dans ce cas je vérifie si elle est égale à 0 ou 1 ... et sinon? je reboucle??? ça serait infinie...
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
$ cat foo.sh 
#! /bin/bash

#set -xv

while true
do
   read -p "Tapez 0 ou 1 : " reponse
   if [[ ${reponse} != [01] ]]
   then 
	echo "Pas bon."
	continue
   else 
	echo "C'est bon."
	break
   fi
done

$ ./foo.sh 
Tapez 0 ou 1 : a
Pas bon.
Tapez 0 ou 1 : l
Pas bon.
Tapez 0 ou 1 : 5
Pas bon.
Tapez 0 ou 1 : B
Pas bon.
Tapez 0 ou 1 : 1
C'est bon.

$
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Ouch d'accord merci.. j'aurais pas trouvé je pense.
Je verrais ça demain je vous tiens au courant.
Merci encore.
0