GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Unterschied zwischen den Bash-Operatoren [[ Vs [ Vs ( Vs ((?

Ich bin etwas verwirrt darüber, was diese Operatoren anders machen, wenn sie in Bash verwendet werden (Klammern, doppelte Klammern, Klammern und doppelte Klammern).

[[ , [ , ( , ((

Ich habe Leute gesehen, die sie für if-Anweisungen wie diese verwenden:

if [[condition]]

if [condition]

if ((condition))

if (condition)

Akzeptierte Antwort:

In Bourne-ähnlichen Shells ein if Anweisung sieht normalerweise so aus

if
   command-list1
then
   command-list2
else
   command-list3
fi

Das then -Klausel wird ausgeführt, wenn der Exit-Code der command-list1 Liste der Befehle ist Null. Wenn der Exit-Code ungleich Null ist, dann der else Klausel ausgeführt wird. command-list1 kann
einfach oder komplex sein. Es kann sich beispielsweise um eine Folge von einer oder mehreren Pipelines handeln, die durch einen der Operatoren ; getrennt sind , & , && , || oder Zeilenumbruch. Der if Die unten gezeigten Bedingungen sind nur Sonderfälle von command-list1 :

  1. if [ condition ]

    [ ist ein anderer Name für den traditionellen test Befehl. [ / test ist ein Standard-POSIX-Dienstprogramm. Alle POSIX-Shells haben es eingebaut (obwohl das von POSIX² nicht benötigt wird). Der test Befehl setzt einen Exit-Code und den if Anweisung wirkt entsprechend. Typische Tests sind, ob eine Datei existiert oder eine Zahl gleich einer anderen ist.

  2. if [[ condition ]]

    Dies ist eine neue aktualisierte Variante von test ¹ von ksh diese Bash , zsh , yash , busybox sch auch unterstützen. Dieser [[ ... ]] construct setzt auch einen Exit-Code und den if Anweisung wirkt entsprechend. Unter seinen erweiterten Funktionen kann es testen, ob ein String mit einem Wildcard-Muster übereinstimmt (nicht in busybox sh ).

  3. if ((condition))

    Noch ein ksh Erweiterung, die bash und zsh auch unterstützen. Dies führt Arithmetik durch. Als Ergebnis der Arithmetik wird ein Exit-Code gesetzt und der if Anweisung wirkt entsprechend. Es gibt einen Beendigungscode von Null (wahr) zurück, wenn das Ergebnis der arithmetischen Berechnung nicht Null ist. Wie [[...]] , dieses Formular ist nicht POSIX und daher nicht portierbar.

  4. if (command)

    Dies führt den Befehl in einer Subshell aus. Wenn der Befehl abgeschlossen ist, setzt er einen Exit-Code und den if Anweisung wirkt entsprechend.

    Ein typischer Grund für die Verwendung einer Subshell wie dieser besteht darin, Nebeneffekte von command zu begrenzen if command erforderliche Variablenzuweisungen oder andere Änderungen an der Umgebung der Shell. Solche Änderungen bleiben nach Abschluss der Subshell nicht erhalten.

  5. if command

    Befehl ausgeführt und der if Die Anweisung handelt gemäß ihrem Exit-Code.

Verwandte:Wie kann ich bash als Anmelde-Shell verwenden, wenn der Systemadministrator mich nicht ändern lässt?


Linux
  1. Unterschied zwischen ' und ' in der Befehlszeile (bash)??

  2. Der „eval“-Befehl in Bash?

  3. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  4. Was ist der Unterschied zwischen dem Befehl „locate“ und „find“ in Linux?

  5. Was ist der Unterschied zwischen &> und >&in bash?

Bash Exit-Befehl und Exit-Codes

Verstehen des Unterschieds zwischen dem Befehl sudo und su unter Linux

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

Was ist der Unterschied zwischen Cat und Touch Command?

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist der Unterschied zwischen Kill- und Killall-Befehlen?