129 votes

Comment puis-je annuler la valeur de retour d'un processus ?

Je recherche un simple, mais multi-plateforme négate -process qui annule la valeur qu'un processus renvoie. Il devrait mapper 0 à une certaine valeur != 0 et n'importe quelle valeur != 0 à 0, c'est-à-dire que la commande suivante devrait renvoyer "oui, le chemin inexistant n'existe pas" :

 ls nonexistingpath | negate && echo "yes, nonexistingpath doesn't exist."

L'opérateur ! - est génial mais malheureusement pas indépendant de la coque.

46voto

Jay Conrod Points 12375

Dans Bash, utilisez l'opérateur ! avant la commande. Par exemple :

! ls nonexistingpath && echo "yes, nonexistingpath doesn't exist"

19voto

Eduard Wirch Points 4102

Vous pouvez essayer :

ls nonexistingpath || echo "yes, nonexistingpath doesn't exist."

ou tout simplement :

! ls nonexistingpath

12voto

cardil Points 404

S'il arrive que vous n'ayez pas Bash comme shell (par exemple : scripts Git, ou tests d'exécution Puppet), vous pouvez exécuter :

echo '! ls notexisting' | bash

-> retcode : 0

echo '! ls /' | bash

-> retcode : 1

6voto

4irmann Points 61

Solution sans !, sans sous-coque, sans if, et devrait fonctionner au moins dans Bash :

ls nonexistingpath; test $? -eq 2 && echo "yes, nonexistingpath doesn't exist."

# Alternatively without an error message and handling of any error code > 0
ls nonexistingpath 2>/dev/null; test $? -gt 0 && echo "yes, nonexistingpath doesn't exist."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X