• [^] # Re: Solution

    Posté par . En réponse au message Comparer deux numéros de versions. Évalué à 2.

    Oui, merci, j'avoue que mon erreur est honteuse snif...
    Pour me faire pardonner, voilà un truc qui marche pour déterminer si deux numéros de versions sont différents et de lancer un traitement le cas échéant.


    # Pour comparer les versions, il ne faut pas utiliser la comparaison lexicographique directement
    # car elle entraine des resultats faux dans certains cas
    # On sépare donc un numéro de version en trois - Le prefixe (nombre entier), le mineur (chiffre), et la release (lettre)
    # La variable COPY_SCRIPT indique si il est necessaire de copier les
    # scripts de l'application vers le client

    COPY_SCRIPT="0"
    VERSION_CLIENT=4.2
    VERSION_APPLI=4.1a
    SUFFIX_CLIENT=$(echo $VERSION_CLIENT | awk -F . '{ print 2ドル }')
    PREFIX_CLIENT=$(echo $VERSION_CLIENT | awk -F . '{ print 1ドル }')
    MINOR_CLIENT=$(echo $SUFFIX_CLIENT | sed -e 's/[a-z]//' )
    RELEASE_CLIENT=$(echo $SUFFIX_CLIENT | sed -e 's/[0-9]//' )


    SUFFIX_APPLI=$(echo $VERSION_APPLI | awk -F . '{ print 2ドル }')
    PREFIX_APPLI=$(echo $VERSION_APPLI | awk -F . '{ print 1ドル }')
    MINOR_APPLI=$(echo $SUFFIX_APPLI | sed -e 's/[a-z]//' )
    RELEASE_APPLI=$(echo $SUFFIX_APPLI | sed -e 's/[0-9]//' )



    # Si les version de l'application et du client sont différentes
    if [ $VERSION_APPLI != $VERSION_CLIENT ]
    then
    # La migration automatique a été activée
    if [ $AUTO_MIGRATION = "true" ]
    then
    #On compare d'abord le prefixe en utilisant la comparaison arithmétique
    if [ $PREFIX_APPLI -ge $PREFIX_CLIENT ]
    then
    if [ $PREFIX_APPLI -eq $PREFIX_CLIENT ]
    then
    echo "PREFIX APPLI EGAL"
    if [ $MINOR_APPLI -ge $MINOR_CLIENT ]
    then
    if [ $MINOR_APPLI -eq $MINOR_CLIENT ]
    then
    echo "MINOR APPLI EGAL"
    if [[ $RELEASE_APPLI > $RELEASE_CLIENT ]]
    then
    COPY_SCRIPT="1"
    fi
    else
    echo "MINOR APPLI PLUS GRAND"
    COPY_SCRIPT = "1"
    fi
    fi
    else
    echo "PREFIX APPLI PLUS GRAND"
    COPY_SCRIPT="1"
    fi
    fi

    if [ $COPY_SCRIPT == "1" ]
    then
    echo "LE TRAITEMENT A LANCER"
    fi