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

(commande || exit)

23 réponses
Avatar
Thomas
bonjour :-)


je croyais que exit faisait sortir du script en toutes circonstances

mais apparemment
(commande || exit)
ne fait sortir que de la parenthèse
et c'est peut être pareil pour
`commande || exit`

comment peut on faire ?

--
j'agis contre l'assistanat, je travaille dans une SCOP !

3 réponses

1 2 3
Avatar
Stephane Chazelas
2007-10-1, 13:43(+00), Marc:
Stephane Chazelas wrote:

Dans tous les cas, c'est une mauvaise idee de vouloir verifier
l'exit code de cmd dans "cmd | grep -q pattern".


Euh je suis d'accord, mais j'imagine que là ce qui intéressait la
personne est plutôt l'exit code de grep (du coup on peut enlever l'option
-q et vérifier si la chaîne sortie par grep a une longueur 0).


if ! cmd | grep -q whatever; then ...

marchera avec tous les sh POSIX et tous les Unix de moins de 15
ans possedent un tel shell.

Si on veut etre Bourne compatible on peut faire

if cmd | grep -q whatever; then
:
else
...
fi

ou

cmd | grep -q whatever || ...

Ou

cmd | grep -q whatever
if [ "$?" -ne 0 ]; then ...

ou

not() {
eval "$@"
[ "$?" -ne 0 ]
}

if not "cmd | grep -q whatever"; then ...

--
Stéphane


Avatar
Stephane Chazelas
2007-10-01, 01:38(+02), Cyrille Lefevre:
ou alors la meme structure que ci-dessus, utilisant $? (mais j'ai
tendance à penser que les if-then-else sont plus lisibles, donc
maintenables).
mais pas portable. "! commande", quoique posix, n'est malheureusement

pas supporté par tout les shells.
[...]


Parmi les shells "POSIX", il n'y a que les vieilles version de ksh
(par example le ksh de HPUX) qui ne le supporte pas (mais je ne
pense pas que ce shell se proclame POSIX anyway).


j'ai qu'un ksh88 (irix sous cygwin) sous la main.
je savais bien qu'il en existait un, mais je ne me souvenais plus lequel.
toutefois, en prod, HP existe bien, et il faut faire avec...
enfin sans ! :)
[...]


Non, le ksh de HPUX est un ksh, il n'y a aucun standard qui
regisse ksh donc aucune guarantie. En production, on n'utilise
pas ksh pour ecrire des scripts portables. On utilise sh. Le sh
d'HPUX, qui est different du ksh d'HPUX, est basé sur une
version plus recente de ksh et est POSIX, donc supporte ! comme
tous les sh POSIX de tous les systemes.

--
Stéphane




Avatar
Cyrille Lefevre
2007-10-01, 01:38(+02), Cyrille Lefevre:

Non, le ksh de HPUX est un ksh, il n'y a aucun standard qui
regisse ksh donc aucune guarantie. En production, on n'utilise
pas ksh pour ecrire des scripts portables. On utilise sh. Le sh


c'est effectivement le cas, j'utilise bien sh :)

d'HPUX, qui est different du ksh d'HPUX, est basé sur une
version plus recente de ksh et est POSIX, donc supporte ! comme
tous les sh POSIX de tous les systemes.


jamais fait attention à ce détail ! mais c'est bon de le savoir :)
par habitude, j'ai éliminé le "! cmd" de mon language...

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.

1 2 3