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
[^] # Re: en fait non .. => Pour info
Posté par Steve Azriel . En réponse au message Test si le retour d'un grep est vide, erreurs.. Évalué à 1.
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:
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