Je sais que je peux faire cela ... Mais si je veux nier la condition que je vérifie? c'est-à-dire quelque chose comme ça (qui ne fonctionne évidemment pas) p> Je pourrais faire quelque chose comme ça ... p>
3 Réponses :
Si vous voulez nier, vous recherchez ou (simple inverse les actions if / eus): p> ! code>:
if cmp &>/dev/null $f1 $f2; then
echo "$f1 $f2 are the same"
else
echo >&2 "$f1 $f2 are NOT the same"
fi
if ! diff -q "$f1" "$f2"; then ...
nier Utiliser Pas tout à fait sûr pourquoi vous avez besoin de la négation, lorsque vous gérez les deux cas ... Si vous n'avez besoin que de gérer le cas où ils Ne correspondez pas: P> si! diff -q $ f1 $ f2; code>. Documenté dans
test homme code>:
diff -q $f1 $f2 || echo "they're different"
Est-ce que cela invoque réellement le test cependant? Je n'utilise pas "test" ni "[".
Cela ne l'invoque pas, c'est une coquille intégrée (pour des raisons de performance), mais la syntaxe est la même
Test de l'homme code> n'est pas pertinent ici. De
homme bash code>: _ si le mot réservé! précède un pipeline, l'état de sortie de ce pipeline est la négation logique de l'état de sortie décrite ci-dessus._
Le canonique peut être Comment puis-je annuler la valeur de retour d'un processus? i>?