Problème boucle if en shell

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.
Configuration: Windows XP
Internet Explorer 7.0

1 réponse

  1. Modérateur
    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
    ;-))