Précédent   Forum des professionnels en informatique > Systèmes > Linux > Distributions > Ubuntu
Ubuntu Vos questions sur les distributions Ubuntu et dérivées (Kubuntu, Xubuntu... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/03/2011, 20h29   #1
Membre habitué
 
Inscription : avril 2007
Messages : 491
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 491
Points : 114
Points : 114
Par défaut expression regulière en bash

Bonjour j'essaye d'écrire un script qui vérifie que le paramètre entré au clavier est bien un nombre voici le code
Code :
1
2
3
4
5
6
7
8
9
10
#! /bin/bash 
       echo "Entrez un nombre: \c"
	read nombre
	if [[ $nombre = ?([-+])+([0-9]) ]]	
		then
			echo " $nombre est bien un nombre"
			exit 0
	fi
			echo " $nombre n'est pas un nombre"
			exit 1
j'ai activé l'option mais à chaque fois que je rentre un paramètre j'ai l'erreur
Code :
1
2
3
/home/picol/premier: line 19: Erreur de syntaxe dans une expression conditionnelle : symbole « ( » inattendu
/home/picol/premier: line 19: Erreur de syntaxe près de « ?([ »
/home/picol/premier: line 19: `	if [[ $nombre = ?([-+])+([0-9]) ]]	'
je ne comprend pas pourquoi ce bout de code
Code :
if [[ $nombre = ?([-+])+([0-9]) ]]
produit une erreur.
sebac est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 25/03/2011, 21h09   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

les expressions régulières sont évaluées entre [[ ]] à l'aide de l'opérateur =~

sinon, l'opérateur == permet d'évaluer les Motifs génériques étendus, lorsque l'option extglob est activée.

mais pourquoi s'embêter avec une regex :
Code bash :
1
2
3
4
5
6
for var in 42 bla
do if ((var)) &>/dev/null
    then echo "\$var est un nombre"
    else echo "\$var n'est pas un nombre"
    fi
done
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/03/2011, 18h45   #3
Membre habitué
 
Inscription : avril 2007
Messages : 491
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 491
Points : 114
Points : 114
Merci pour la réponse ça marche bien avec ~ comme ceci
Code :
if [[ $nombre =~ ?([-+])+([0-9]) ]]
sebac est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h04.


 
 
 
 
Partenaires

Hébergement Web