Obwohl ich nicht die ursprüngliche Frage zu beantworten concering die no-op-Befehl, viele (wenn nicht die meisten) Probleme, wenn man vielleicht denken, „in diesem Zweig ich nichts zu tun haben“ kann durch einfaches umgangen werden Umstrukturierung der Logik, so dass diese Verzweigung nicht auftreten wird.
Ich versuche, eine allgemeine Regel zu geben, indem das OPs Beispiel
nichts tun zu verwenden, wenn $ a größer als "10" ist, print "1", wenn $ a kleiner als "5", sonst, print „2“
wir haben eine Niederlassung zu vermeiden, wo $a
mehr als 10 bekommt, so $a < 10
als eine allgemeine Bedingung folgende Bedingung zu jedem anderen, angewendet werden kann.
Im Allgemeinen, wenn Sie nichts sagen, wenn X, dann ist es als einen Zweig vermeiden umformulieren, wo X. Normalerweise können Sie die Vermeidung dadurch erreichen, dass Sie einfach X negieren und auf alle anderen Bedingungen anwenden.
das OPs Beispiel mit der Regel so umstrukturiert, angewandt werden:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
nur eine Variation des oben, umschließt alles im $a < 10
Zustand:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(Für dieses spezielle Beispiel @Flimzys restructuring ist sicherlich besser, aber ich wollte eine allgemeine Regel für all die Leute geben, die suchen, wie man nichts macht.)
für Bildung, ist ein Operator, um "wahr" zu laufen. Ich bevorzuge in Fällen wie diesen viel wahrer, da es viel einfacher zu lesen ist. – SaintHax
@SaintHax Nein, es läuft nicht "wahr". Es ist in die Shell eingebaut und tut nichts. – Barmar
es ist Shell eingebaut (Sie sind richtig), es gibt wahr (Status 0) genau wie wahr, und es ist schwieriger zu lesen. Bash ist eine DevOps-Sprache, und wenn ':' von jemandem in meinem Team geschrieben wird, würde ich es ändern. – SaintHax