Was bedeutet der Befehl "-ne" in einem Bash-Skript?
Was macht beispielsweise die folgende Zeile aus einem Bash-Skript?
[ $RESULT -ne 0 ]
Was bedeutet der Befehl "-ne" in einem Bash-Skript?
Was macht beispielsweise die folgende Zeile aus einem Bash-Skript?
[ $RESULT -ne 0 ]
$RESULT"nicht gleich" ist0
!=ist String-Ungleichung.
[führt einen Befehl namens aus test. -neist ein Argument für den testBefehl, nicht für bash, und Sie finden seine Dokumentation in man test.
[ "$RESULT" -ne 0 ]minimal sein - oder viel besser (( RESULT != 0 )). (Besser als das - wenn Sie dies erhalten $?, können Sie einfach nach dem Exit-Status des Befehls verzweigen, den Sie direkt ausführen, anstatt ihn auszuführen, seinen Exit-Status in eine Variable zu erfassen und dann den Wert dieser Variablen zu ersetzen in einen testBefehl).
Antworten:
Dies ist eines der Dinge, nach denen es schwierig sein kann, zu suchen, wenn Sie noch nicht wissen, wo Sie suchen müssen.
[ist eigentlich ein Befehl, der nicht wie erwartet Teil der Bash-Shell-Syntax ist. Es handelt sich zufällig um einen in Bash integrierten Befehl, der im Bash-Handbuch dokumentiert ist.
Es gibt auch einen externen Befehl, der dasselbe tut. Auf vielen Systemen wird es vom GNU Coreutils-Paket bereitgestellt.
[ist äquivalent zum testBefehl, außer dass dies als letztes Argument [erforderlich ]ist und testnicht.
Angenommen, die Bash-Dokumentation ist auf Ihrem System installiert. Wenn Sie oder eingeben oder info bashsuchen (die Apostrophe sind Teil der Suche), finden Sie die Dokumentation für den Befehl, auch als Befehl bezeichnet. Wenn Sie anstelle von verwenden , suchen Sie nach (dem Wort am Zeilenanfang nach einer bestimmten Anzahl von Leerzeichen).'test''['[testman bashinfo bash^ *testtest
Wenn Sie dem Verweis auf "Bedingte Bash-Ausdrücke" folgen, gelangen Sie zu der Beschreibung von -ne, bei der es sich um den numerischen Ungleichungsoperator handelt ("ne" steht für "ungleich"). Im Gegensatz dazu !=handelt es sich um den Zeichenfolgenungleichheitsoperator .
Sie finden die Bash-Dokumentation auch im Internet.
testund [)-nebefindet sich unter " arg1 OP arg2 ")testDie offizielle Definition des testBefehls ist der POSIX-Standard (dem die Bash-Implementierung einigermaßen gut entsprechen sollte, möglicherweise mit einigen Erweiterungen).
testist schließlich ein POSIX-Befehl.
"ungleich" Wird also in diesem Fall $RESULTgetestet, um ungleich Null zu sein.
Der Test wird jedoch numerisch und nicht alphabetisch durchgeführt:
n1 -ne n2 True if the integers n1 and n2 are not algebraically equal.
verglichen mit:
s1 != s2 True if the strings s1 and s2 are not identical.