• # Solution

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

    Bon, je suis arrivé à une solution, et pourtant, ça daube à l'exécution, et je vois vraiment pas pourquoi. Voici mon code de test:

    VERSION_CLIENT="9.2a"
    VERSION_APPLI="8.2b"
    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]//' )

    #On compare d'abord le prefixe en utilisant la comparaison arithmétique
    if [ $PREFIX_APPLI -gt $PREFIX_CLIENT ]
    then
    echo "PREFIX APPLI PLUS GRAND"
    if [ $MINOR_APPLI -gt $MINOR_CLIENT ]
    then
    echo "MINOR APPLI PLUS GRAND"
    if [[ $RELEASE_APPLI > $RELEASE_CLIENT ]]
    then
    echo "RELEASE APPLI PLUS GRAND"
    fi
    fi
    fi


    Et à l'exécution, je me prends un:

    [: -gt: unary operator expected


    J'ai vraiment aucune idée... je vois pas ce qui est mal fait, ma découpe fonctionne pourtant...
    PS: Je sais, ma variable release ferait mieux de s'appeler revision mais bon, de là ne vient pas le problème.