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
. -ne
ist ein Argument für den test
Befehl, 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 test
Befehl).
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 test
Befehl, außer dass dies als letztes Argument [
erforderlich ]
ist und test
nicht.
Angenommen, die Bash-Dokumentation ist auf Ihrem System installiert. Wenn Sie oder eingeben oder info bash
suchen (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'
'['
[
test
man bash
info bash
^ *test
test
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.
test
und [
)-ne
befindet sich unter " arg1 OP arg2 ")test
Die offizielle Definition des test
Befehls ist der POSIX-Standard (dem die Bash-Implementierung einigermaßen gut entsprechen sollte, möglicherweise mit einigen Erweiterungen).
test
ist schließlich ein POSIX-Befehl.
"ungleich" Wird also in diesem Fall $RESULT
getestet, 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.