Aide sur la commande IF sous ubuntu [Résolu/Fermé]

Messages postés
3225
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
-
Bonjour,

j'ai un petit prb avec la commande IF , malgrés plusieurs manip avec comme : IF [$var1 -eq $var2] ; then ...; fi
donc je vous donne mon code , s'il ya aussi d'autre manip , je suis preneur ;)
voici mon code en bash :

#!/bin/bash
echo
echo
echo CE programme permet de trouver
echo
echo votre jour de naissance
echo
echo
echo ------------------------------------------------------------------
echo janvier fevrier mars avril mai juin juillet août sept oct nov dec
echo ------------------------------------------------------------------
echo 0 3 3 6 1 4 6 2 5 0 3 5
echo ------------------------------------------------------------------
echo
echo ----------------------------
echo dim lun mar mer jeu ven sam
echo ----------------------------
echo 0 1 2 3 4 5 6
echo ----------------------------
echo
echo
echo Tappez votre jour de naissance :
echo
read jour
if [ "$jour" -gt "31" ] ; then echo " Vous devez choisir un nombre inferieur ou égale a 31"
echo " car ( $jour est superieur a 31 )"
read jours
elif [ "$jour" -le "0" ] ; then echo " Vous devez choisir un nombre superrieur ou égale a 1"
echo " car ( $jour est inferieur a 1 )"
read jours
else
echo
echo Jour de naissance : $jour
echo
fi
echo
echo Tappez votre mois de naissance :
echo
read mois
if [ $mois -gt "12" ] ; then echo " Vous devez choisir un nombre inferieur ou égale a 12"
echo " car ( $mois est superieur a 12 )"
read mois
elif [ $mois -le "0" ] ; then echo " Vous devez choisir un nombre superrieur ou égale a 1"
read mois
echo " car ( $mois est inferieur a 1 )"
else
echo
echo Mois de naissance : $mois
echo
fi
echo
echo Tappez votre année de naissance "en 4 chiffres Ex : 1900 ":
echo
read annee
echo ${annee}-"1900"
#date +%e &&date +%A &&date +%B &&date +%G
if zenity --calendar \
--title="confirmer la date de votre jour de naissance" \
--text="Cliquez sur votre date pour la confirmer." \
--day=$jour --month=$mois --year=$annee
then echo $?
else echo "Aucune date sélectionnée"
fi
if test $jours -eq 'date +%B' ; then
if test $0$mois -eq 'date +%m' ; then
echo "bonne année versaire !"
fi
fi


SVP et merci
karirovax ;)
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3400
1
Merci
Salut,

Tu as fait une erreur de frappe, ce n'est pas jours mais jour le nom de ta variable
Et puis vu que tu testes le jour alors %B te donne le mois et ton test ne peux pas fonctionner

man date
       %B     nom complet, conformément aux paramètres régionaux, des mois (janvier.décembre)


N'oublie pas non plus que le jour est sur deux chiffre, donc soit tu saisie 0d soit tu utilises un sprintf

lami20j@debian-acer:~$ cat test.sh 
#!/bin/bash
echo
echo
echo CE programme permet de trouver
echo
echo votre jour de naissance
echo
echo
echo ------------------------------------------------------------------
echo janvier fevrier mars avril mai juin juillet août sept oct nov dec
echo ------------------------------------------------------------------
echo 0 3 3 6 1 4 6 2 5 0 3 5
echo ------------------------------------------------------------------
echo
echo ----------------------------
echo dim lun mar mer jeu ven sam
echo ----------------------------
echo 0 1 2 3 4 5 6
echo ----------------------------
echo
echo
echo Tappez votre jour de naissance :
echo
read jour
if [ "$jour" -gt "31" ] ; then echo " Vous devez choisir un nombre inferieur ou égale a 31"
echo " car ( $jour est superieur a 31 )"
read jour
elif [ "$jour" -le "0" ] ; then echo " Vous devez choisir un nombre superrieur ou égale a 1"
echo " car ( $jour est inferieur a 1 )"
read jour
else
echo
echo Jour de naissance : $jour
echo
fi
echo
echo Tappez votre mois de naissance :
echo
read mois
if [ $mois -gt "12" ] ; then echo " Vous devez choisir un nombre inferieur ou égale a 12"
echo " car ( $mois est superieur a 12 )"
read mois
elif [ $mois -le "0" ] ; then echo " Vous devez choisir un nombre superrieur ou égale a 1"
read mois
echo " car ( $mois est inferieur a 1 )"
else
echo
echo Mois de naissance : $mois
echo
fi
echo
echo Tappez votre année de naissance "en 4 chiffres Ex : 1900 ":
echo
read annee
echo ${annee}-"1900"
#date +%e &&date +%A &&date +%B &&date +%G
if zenity --calendar \
--title="confirmer la date de votre jour de naissance" \
--text="Cliquez sur votre date pour la confirmer." \
--day=$jour --month=$mois --year=$annee
then echo $?
else echo "Aucune date sélectionnée"
fi
if test $jour -eq $(date +%d) ; then
if test $mois -eq $(date +%m) ; then
echo "bonne année versaire !"
fi
fi


Exécution
lami20j@debian-acer:~$ sh test.sh 


CE programme permet de trouver

votre jour de naissance


------------------------------------------------------------------
janvier fevrier mars avril mai juin juillet août sept oct nov dec
------------------------------------------------------------------
0 3 3 6 1 4 6 2 5 0 3 5
------------------------------------------------------------------

----------------------------
dim lun mar mer jeu ven sam
----------------------------
0 1 2 3 4 5 6
----------------------------


Tappez votre jour de naissance :

25

Jour de naissance : 25


Tappez votre mois de naissance :

07

Mois de naissance : 07


Tappez votre année de naissance en 4 chiffres Ex : 1900 :

1900
1900-1900
25/07/1900
0
bonne année versaire !

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 6022 internautes nous ont dit merci ce mois-ci

karirovax
Messages postés
3225
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
167 -
Re,

merci beaucoup , ça marche , un grand merci ;)
Messages postés
3225
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
167
0
Merci
up !!
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3400
0
Merci
Re,

Et puis pour capturer le résultat d'une commande on n'utilises pas les apostrophes.
Soit on utilise les apostrophes inverses soit $(commande)
GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
karirovax
Messages postés
3225
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
167 -
Re,

merci encore , je doit compléter mon script et si je trouve des diffuculés , je vous dire ;)