Obwohl ich die ursprüngliche Frage zum No-Op-Befehl nicht beantworte, können viele (wenn nicht die meisten) Probleme, bei denen man denkt, " in diesem Zweig muss ich nichts tun ", umgangen werden, indem einfach die Logik so umstrukturiert wird , dass dieser Zweig gewinnt nicht auftreten.
Ich versuche, anhand des OP-Beispiels eine allgemeine Regel anzugeben
Tun Sie nichts, wenn $ a größer als "10" ist. Drucken Sie "1", wenn $ a kleiner als "5" ist. Andernfalls drucken Sie "2".
Wir müssen einen Zweig vermeiden, $a
der mehr als 10 bekommt$a < 10
eine allgemeine Bedingung nach der Bedingung auf jede andere angewendet werden kann.
Wenn Sie sagen, dass Sie bei X nichts tun , formulieren Sie es im Allgemeinen so, dass Sie einen Zweig vermeiden, in dem X. . Normalerweise können Sie die Vermeidung erreichen, indem Sie einfach X negieren und auf alle anderen Bedingungen anwenden.
Das OP-Beispiel mit der angewendeten Regel kann also wie folgt umstrukturiert werden:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
Nur eine Variation der oben genannten, die alles in den $a < 10
Zustand einschließt :
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(Für dieses spezielle Beispiel ist die Umstrukturierung von @Flimzys sicherlich besser, aber ich wollte allen Personen, die suchen, wie man nichts tut, eine allgemeine Regel geben.)
true
. Es ist in die Shell eingebaut und macht nichts.