La grep
commande donne à un état de sortie:
$echo "foo.bar" | grep -o foo
foo
$echo $?
0
$echo "foo.bar" | grep -o pop
$echo $?
1
Mais je dois utiliser sed
et j'ai réalisé qu'il n'a pas de statut de sortie:
$echo "foo.bar" | sed 's/bar.*$//'
foo.
$echo $?
0
$echo "foo.bar" | sed 's/pop.*$//'
foo.bar
$echo $?
0
Je sais que je devrais jouer avec l' -q
option, mais je n'ai pas réussi.
sed
très certainement a un statut de sortie, il ne fait tout simplement pas ce dont vous avez besoin ici. Si lased
commande échoue, par exemple, si vous essayez de l'exécuter sur un fichier auquel vous n'avez pas accès en écriture ou qui n'existe pas, sesed
fermera avec un état de sortie différent de 0. Le statut de sortie indique simplement sised
vous avez réussi à faire ce que vous lui avez demandé de faire et s'il aecho "foo.bar" | sed 's/pop.*$//'
été correctement exécuté. Il a supprimé toutes les lignes avecpop
. Qu'il n'y ait pas de telles lignes est sans importance, la commande fonctionnait toujours.