La grepcommande 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 sedet 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' -qoption, mais je n'ai pas réussi.
sedtrès certainement a un statut de sortie, il ne fait tout simplement pas ce dont vous avez besoin ici. Si lasedcommande é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, sesedfermera avec un état de sortie différent de 0. Le statut de sortie indique simplement sisedvous 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.