Problème boucle if en shell

sajodia -  
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
bonjour,
j'ai récupérer la valeur du mois dans un fichier(vMois) et je veux tester cette valeur en utilisant une boucle if voila ce que j'ai fait mais ça ne marche pas

minute=`date +%M`
heure=`date +%H`
jour=`date +%d`
#mois=`date +%m`
#an=`date +%Y`
an=2008
mois=janvier


nomfich=/tooto/mimi/defi/Hrt/$an/$mois/Tom

ligne=$(sed -n "2p" $nomfich)
vAnnee=$(echo $ligne | cut -c6-9)
vMois=$(echo $ligne | cut -c10-11)

if [ $vMois = 01 or 03 or 05 or 07 or 08 or 10 or 12 ]
then
vDatefin="31/$vMois/$vAnnee"
echo "Datefin : $vDatefin"

elif [ $vMois = 02 ]
then
vDatefin="28/$vMois/$vAnnee"
echo "Datefin : $vDatefin"

elif [ $vMois = 04 or 06 or 09 or 11 ]
then
vDatefin="30/$vMois/$vAnnee"
echo "Datefin : $vDatefin"
fi
Merci de m'aider.

1 réponse

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Tu devrais partir sur un "case ... esac" plutôt que sur une boucle "if...then...elif...then...else...fi" :
#! /bin/bash

echo "Entrez un chiffre entre 01 et 20"
read chiffre
case "$chiffre" in
0[13578]|1[02]) echo "Mois de 31 jours"
                ;;
0[469]|11)      echo "Mois de 30 jours"
                ;;
02)             echo "Mois bissextile"
                ;;
*)              echo "Erreur"
                ;;
esac
;-))
0