Je voudrais avoir la commandeexécutéequand
n’est pas vrai.
Ce que je fais mal ?
Je voudrais avoir la commandeexécutéequand
n’est pas vrai.
Ce que je fais mal ?
essayez
if ! grep -q sysa /etc/passwd ; then
grep
retours true
si elle trouve la cible de recherche, et false
si elle ne le fait pas.
Afin de ne PAS false
== true
.
if
évaluation dans les coquilles sont conçus pour être très flexible, et à plusieurs reprises ne nécessitent pas de chaînes de commandes (comme vous l'avez écrit).
Aussi, en regardant ton code en l'état, votre utilisation de l' $( ... )
formulaire de commande de substitution est d'être félicité, mais pensez à ce qui est en train de sortir du processus. Essayez echo $(cat /etc/passwd | grep "sysa")
pour voir ce que je veux dire. Vous pouvez prendre cela en utilisant l' -c
(count) option de grep et puis n' if ! [ $(grep -c "sysa" /etc/passwd) -eq 0 ] ; then
qui travail mais plutôt old school.
MAIS, vous pourriez utiliser les nouvelles fonctionnalités d'environnement (arthimentic expansion) comme
`if ! (( $(grep -c "sysa" /etc/passwd) == 0 )) ; then ...`
qui vous donne également l'avantage d'utiliser le c-lang en fonction des opérateurs de comparaison, ==,<,>,>=,<=,%
et peut-être quelques autres.
Enfin, il y a un prix appelé l' Useless Use of Cat (UUOC)
. :-) Certaines personnes vont sauter de haut en bas et de pleurer gothca! Je vais juste dire qu' grep
pouvez prendre un nom de fichier sur elle cmd-ligne, alors pourquoi invoquer processus supplémentaire et le tuyau de constructions lorsque vous n'avez pas à? ;-)
J'espère que cette aide.
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.