Manchmal, wenn ich Bedingungen mache, muss der Code nichts tun, z. B. möchte ich, dass Bash nichts tut, wenn er $a
größer als "10" ist, "1" druckt, wenn er $a
kleiner als "5" ist, andernfalls "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Dies macht jedoch einen Fehler. Gibt es einen Befehl, der nichts bewirkt und mein Skript auch nicht verlangsamt?
bash
conditional
noop
Dorf
quelle
quelle
true
. Es ist in die Shell eingebaut und macht nichts.:
sie von jemandem in meinem Team geschrieben wird, muss sie geändert werden.true
in einem nicht bedingten Kontext verwendet wird, muss er dies ändern.if true
ist in Ordnung,then true
scheint falsch.if ! condition; then do something; fi
anstatt ihn zu verwendenif condition; then :; else do something; fi
.Sie können wahrscheinlich nur den
true
Befehl verwenden:Eine Alternative in Ihrem Beispielfall (aber nicht unbedingt überall) besteht darin, Ihr if / else neu zu bestellen:
quelle
true
undfalse
sind effektiv nicht-ops , so weit das Skript betrifft, aber im Prinzip sie könnten in einigen Muscheln Gabel , die diese Syntax akzeptiert so vielleicht:
besser ist.true
undfalse
sind eingebaut. Für ältere Muschelntrue
,false
und sogar:
möglicherweise externe Befehle (obwohl Sie wahrscheinlich die letztere nur in sehen würde sehr alte Muscheln).:
einfach, weil es expliziter ist, was die Absicht istObwohl 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
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:
Nur eine Variation der oben genannten, die alles in den
$a < 10
Zustand einschließt :(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.)
quelle
echo "put stuff here"
einige der Nicht-Login-Verwendungen unterbrochen (z. B. wird scp unterbrochen), und nur Leerzeichen / Kommentare verursachen einen Laufzeitfehler.