Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Retour de commande vide

6 réponses
Avatar
Kevin Denis
Bonjour,

j'aimerai tester le cas ou une commande réussit (?$=0 ) mais ou
aucun retour commande apparait.

Ex:
mkdir abcde
ls abcde/
ne renvoie rien, bien que la commande ait réussie.

maintenant je cherche à effectuer un test et effectuer une action
lorsque le retour de commande est vide, et d'autres actions
si le retour n'est pas vide, i.e:
commande()
if vide then: ...
if quelquechose: autre action

Merci
--
Kevin

6 réponses

Avatar
Che Averell
Kevin Denis écrit :
Bonjour,



Hello,

j'aimerai tester le cas ou une commande réussit (?$=0 ) mais ou
aucun retour commande apparait.



Quelque chose comme ça devrait marcher :
ret=`commande`
if [ "$ret" == "" ] ; then
# c'est vide
else
# c'est rempli
fi

A condition bien entendu que c'est la sortie standard de ta commande
que tu veux vérifier s'il y a quelque chose ou non. Pour l'erreur
standard je ne sais pas faire.
Avatar
Stephane Chazelas
2009-09-02, 14:51(+02), Che Averell:
Kevin Denis écrit :
Bonjour,



Hello,

j'aimerai tester le cas ou une commande réussit (?$=0 ) mais ou
aucun retour commande apparait.



Quelque chose comme ça devrait marcher :
ret=`commande`
if [ "$ret" == "" ] ; then



Note que la syntaxe standard est

[ "$ret" = "" ]

ou [ -z "$ret" ]

ou pour worker around les bugs de certaines implementations de
"[".

[ "x$ret" = x ]

Ca ne marche pas si "commande" n'outpute que des sauts de
lignes.

Dans ce cas, tu peux faire

ret=$(command; ret=$?; echo x; exit "$ret")
if [ x = "$ret" ]...

Faut noter aussi que ca fait que la sortie standard de
"commande" devient un pipe ce qui peux avoir des effets
secondaires.

--
Stéphane
Avatar
Manuel Pégourié-Gonnard
Stephane Chazelas scripsit:

ou pour worker around



Contourner ?

les bugs de certaines implementations de "[".

[ "x$ret" = x ]



J'ai souvent vu cette tournure utilisée. Quels bugs possibles est-elle
censée contourner, et quels sont les exemples courant d'implémentations
fautives ? (Pour ma culture, mais aussi pour me motiver à l'utiliser si
ça vaut le coup : naturellement j'aurai plutôt tendance à préférer -z.)


--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Avatar
Stephane CHAZELAS
2009-09-3, 00:45(+02), Manuel Pégourié-Gonnard:
Stephane Chazelas scripsit:

ou pour worker around



Contourner ?



Ah oui, c'est le mot que je cherchais :-), merci

les bugs de certaines implementations de "[".

[ "x$ret" = x ]



J'ai souvent vu cette tournure utilisée. Quels bugs possibles est-elle
censée contourner, et quels sont les exemples courant d'implémentations
fautives ? (Pour ma culture, mais aussi pour me motiver à l'utiliser si
ça vaut le coup : naturellement j'aurai plutôt tendance à préférer -z.)


[...]

Le Bourne shell:

$ sh -c '[ -z = ]'
sh: test: argument expected

$ sh -c '[ ! = "" ]'
sh: test: argument expected
$ sh -c '[ "(" = "" ]'
sh: test: argument expected

Pour ces derniers, ksh88 et des vieilles version d'ash ont aussi
des problemes et peut-etre d'autres.

[ "" = "$ret" ] ne devrait pas avoir de probleme.

--
Stéphane
Avatar
Stephane CHAZELAS
2009-09-3, 00:45(+02), Manuel Pégourié-Gonnard:
[...]
les bugs de certaines implementations de "[".

[ "x$ret" = x ]



J'ai souvent vu cette tournure utilisée. Quels bugs possibles est-elle
censée contourner, et quels sont les exemples courant d'implémentations
fautives ? (Pour ma culture, mais aussi pour me motiver à l'utiliser si
ça vaut le coup : naturellement j'aurai plutôt tendance à préférer -z.)


[...]

Voir:

http://www.in-ulm.de/~mascheck/various/test/

--
Stéphane
Avatar
Manuel Pégourié-Gonnard
Stephane CHAZELAS scripsit:

http://www.in-ulm.de/~mascheck/various/test/



Merci pour cette référence très complète.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/