• [^] # Re: en fait non .. => Pour info

    Posté par . En réponse au message Test si le retour d'un grep est vide, erreurs.. Évalué à 1.

    Bonjour,

    L'opérateur "-z" est le bon :-)

    Mais si dans le résultat de ta commande tu as des caractères de type "[[:blank:]]" (espace, tabulation, ...) ou saut(s) de ligne, il te faudrait aussi les retirer, par exemple en amont avec un | egrep -v '^$|^[[:blank:]]+$' (ou tout autre expression egrep :P).

    Pour info, je crois que les erreurs de tes premières expériences viennent des autres tests:

    [ $test = " " ] || [ $test = "" ]

    En effet, quand le contenu de "test" n'est pas vide, il peut être formé de plusieurs "mots" (au sens plusieurs chaînes de caractères séparées par des caractères type [[:blank:]] ou saut(s) de ligne).
    Qui dit "mots" non "quotés" dit arguments d'appel de la commande (et oui '[' est une commande :P), d'où le "too many arguments".

    Un petit conseil: utiliser une option de debug (sous Bash & co, c'est "-x" ce qui donne bash -x script.sh à l'appel).
    C'est verbeux, mais quand on s'y habitue (surtout à la manière dont disparaisse les fameux "quotes" à l'affichage :P), c'est pratique.

    Et voilà !

    Cdlt,

    PS: Dernière truc, encore plus sioux, utiliser egrep pour le test.
    C'est gourmand, c'est ce que l'on veut, mais ça le fait aussi :D


    # J'utilise cette syntaxe car je suppose que la variable test est utilisee
    # par la suite sinon, on le place directement dans l'appel d'avant :P
    echo $test | egrep -q "up"
    if [ ${?} -eq 0 ]; then
    # Testez moi :D
    else
    # Testez moi :D
    fi