Aide sur la commande IF sous ubuntu

Résolu/Fermé
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 - Modifié par karirovax le 25/07/2010 à 00:28
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 - 25 juil. 2010 à 01:45
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 ;)
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
25 juil. 2010 à 01:12
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 !
1
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
25 juil. 2010 à 01:21
Re,

merci beaucoup , ça marche , un grand merci ;)
0
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
25 juil. 2010 à 00:26
up !!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 25/07/2010 à 01:19
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
0
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
25 juil. 2010 à 01:45
Re,

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