Bonjour,
Je débute dans les script Linux et je cherche a faire une condition IF vérifiant si ma variable $ANNEE contient bien 4 caractères. Si quelqu'un à une idée je suis preneur, merci d'avance!
Cordialement
Bonjour,
Je débute dans les script Linux et je cherche a faire une condition IF vérifiant si ma variable $ANNEE contient bien 4 caractères. Si quelqu'un à une idée je suis preneur, merci d'avance!
Cordialement
Salut,
tu t'es penché du côté (obscur) des expressions régulières ?
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
Je viens de justement de commencer une doc à ce sujet mais comme tu le dit si bien ça reste encore "obscur" à mes yeux![]()
Très bon le bash, ça permet de faire des choses compliquées rapidement.
Tu peux aussi le combiner à awk, perl, python... ENJOY!
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $ TOTO=ABCD $ echo ${TOTO} ABCD $ echo ${#TOTO} 4 $ TOTO=ABCDE $ echo ${TOTO} ABCDE $ echo ${#TOTO} 5
Merci, j'ai trouvé entre temps, je donne également ma solution au cas où d'autres débutant passerais par là :
Encore merci, je vais continuer à explorer le monde Unix!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if [ ${#ANNEE} -ge 4 ]; then ... else ... fi
quand echo $? retourne 0 c'est que le test est concluant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $ regex="[a-z]{4}" $ echo $var 1 $ [[ $var =~ ^${regex}$ ]] $ echo $? 1 $ var=azer $ [[ $var =~ ^${regex}$ ]] $ echo $? 0 $ var=azer4 $ [[ $var =~ ^${regex}$ ]] $ echo $? 1
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
c'est faux, si ta variable contient ANNEE="COINCOIN" le test passe, pourtant ça n'est pas une année, qui plus est tu vérifies que l'année fait au moins 4 caractères, alors qu'on peut facilement supposer que l'année que tu cherches à valider doit comporter exactement 4 caractères
la bonne solution consiste à valider à la fois que la variable contient bien 4 caractères ET aussi que chaque caractère est bien un chiffre, c'est donc celle proposée par ggnore plus haut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if [[ "$ANNEE" =~ ^[0-9]{4}$ ]]; then ok else pas ok fi
Je suis tout à fait d'accord, la réponse la plus juste est celle de ggnore, la mienne ne faisait que répondre strictement à la question posée sans tenir compte du contexte.
Pour vérifier une date (ici juste l'année, mais on peut étendre), on pourrait la faire valider par la commande date :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ TOTO=coincoin $ if [ "$(date -d $TOTO-01-01 '+%Y' 2>/dev/null )" = "$TOTO" ] ; then echo ok ; else echo ko; fi ko $ TOTO=2001 $ if [ "$(date -d $TOTO-01-01 '+%Y' 2>/dev/null )" = "$TOTO" ] ; then echo ok ; else echo ko; fi ok
Partager