Bash Das neue Test Kommando: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „*"" ist Bashs Verbesserung des "[" Befehls. *Es ist die bessere Wahl, wenn Sie Skripte schreiben, die auf Bash abzielen. Meine Favoriten sind: *Es ist eine…“) |
|||
| Zeile 1: | Zeile 1: | ||
| − | *"[[" ist Bashs Verbesserung des "[" Befehls. | + | * "[[" ist Bashs Verbesserung des "[" Befehls. |
| − | *Es ist die bessere Wahl, wenn Sie Skripte schreiben, die auf Bash abzielen. | + | * Es ist die bessere Wahl, wenn Sie Skripte schreiben, die auf Bash abzielen. |
| − | *Es ist eine syntaktische Funktion der Shell, daher weist sie ein besonderes Verhalten auf, das "[" nicht hat. | + | * Es ist eine syntaktische Funktion der Shell, daher weist sie ein besonderes Verhalten auf, das "[" nicht hat. |
| − | *Variablen müssen nicht mehr quotiert werden, da leere Zeichenfolgen und Zeichenfolgen mit Leerzeichen intuitiver behandelt werden. | + | * Variablen müssen nicht mehr quotiert werden, da leere Zeichenfolgen und Zeichenfolgen mit Leerzeichen intuitiver behandelt werden. |
| − | *Zum Beispiel müssen Sie mit "[" schreiben. | + | * Zum Beispiel müssen Sie mit "[" schreiben. |
<pre> | <pre> | ||
if [ -f "$ FILE"] | if [ -f "$ FILE"] | ||
</pre> | </pre> | ||
| − | *um leere Zeichenfolgen oder Dateinamen mit Leerzeichen richtig zu behandeln. Mit "[[" sind die Anführungszeichen unnötig: | + | * um leere Zeichenfolgen oder Dateinamen mit Leerzeichen richtig zu behandeln. Mit "[[" sind die Anführungszeichen unnötig: |
<pre> | <pre> | ||
if [[ -f $ FILE ]] | if [[ -f $ FILE ]] | ||
</pre> | </pre> | ||
| − | *Da es sich um eine syntaktische Funktion handelt, können Sie && und || verwenden Operatoren für Boolesche Tests und <und> für Zeichenfolgenvergleiche. | + | * Da es sich um eine syntaktische Funktion handelt, können Sie && und || verwenden Operatoren für Boolesche Tests und <und> für Zeichenfolgenvergleiche. |
| − | *[ kann dies nicht tun, da es sich um einen regulären Befehl handelt und &&, ||, <und> nicht als Befehlszeilenargumente an reguläre Befehle übergeben werden. | + | * [ kann dies nicht tun, da es sich um einen regulären Befehl handelt und &&, ||, <und> nicht als Befehlszeilenargumente an reguläre Befehle übergeben werden. |
| − | *Es hat einen wunderbaren Operator = ~, um Übereinstimmungen mit regulären Ausdrücken zu erstellen. Mit [ könntest du schreiben | + | * Es hat einen wunderbaren Operator = ~, um Übereinstimmungen mit regulären Ausdrücken zu erstellen. Mit [ könntest du schreiben |
<pre> | <pre> | ||
if ["$ ANSWER" = y -o "$ ANSWER" = yes] | if ["$ ANSWER" = y -o "$ ANSWER" = yes] | ||
</pre> | </pre> | ||
| − | *Mit [[ können Sie dies als schreiben | + | * Mit [[ können Sie dies als schreiben |
<pre> | <pre> | ||
if [[ $ ANSWER = ~ ^ y (es)? ]] | if [[ $ ANSWER = ~ ^ y (es)? ]] | ||
</pre> | </pre> | ||
| − | *Sie können sogar auf die erfassten Gruppen zugreifen, die in BASH_REMATCH gespeichert sind. | + | * Sie können sogar auf die erfassten Gruppen zugreifen, die in BASH_REMATCH gespeichert sind. |
| − | *Zum Beispiel wäre $ {BASH_REMATCH [1]} "es", wenn Sie oben ein vollständiges "ja" eingeben. | + | * Zum Beispiel wäre $ {BASH_REMATCH [1]} "es", wenn Sie oben ein vollständiges "ja" eingeben. |
| − | *Sie erhalten die Mustererkennung aka Globbing kostenlos. | + | * Sie erhalten die Mustererkennung aka Globbing kostenlos. |
| − | *Vielleicht sind Sie weniger streng im Schreiben von Ja. Vielleicht bist du okay, wenn der Benutzer y-irgendetwas eingibt. Haben Sie sich versichert: | + | * Vielleicht sind Sie weniger streng im Schreiben von Ja. Vielleicht bist du okay, wenn der Benutzer y-irgendetwas eingibt. Haben Sie sich versichert: |
| − | *wenn $ ANSWER = y * | + | * wenn $ ANSWER = y * |
| + | ; Dieser Befehl ist nicht POSIX-compliant | ||
Version vom 30. Mai 2023, 12:23 Uhr
- "[[" ist Bashs Verbesserung des "[" Befehls.
- Es ist die bessere Wahl, wenn Sie Skripte schreiben, die auf Bash abzielen.
- Es ist eine syntaktische Funktion der Shell, daher weist sie ein besonderes Verhalten auf, das "[" nicht hat.
- Variablen müssen nicht mehr quotiert werden, da leere Zeichenfolgen und Zeichenfolgen mit Leerzeichen intuitiver behandelt werden.
- Zum Beispiel müssen Sie mit "[" schreiben.
if [ -f "$ FILE"]
- um leere Zeichenfolgen oder Dateinamen mit Leerzeichen richtig zu behandeln. Mit "[[" sind die Anführungszeichen unnötig:
if [[ -f $ FILE ]]
- Da es sich um eine syntaktische Funktion handelt, können Sie && und || verwenden Operatoren für Boolesche Tests und <und> für Zeichenfolgenvergleiche.
- [ kann dies nicht tun, da es sich um einen regulären Befehl handelt und &&, ||, <und> nicht als Befehlszeilenargumente an reguläre Befehle übergeben werden.
- Es hat einen wunderbaren Operator = ~, um Übereinstimmungen mit regulären Ausdrücken zu erstellen. Mit [ könntest du schreiben
if ["$ ANSWER" = y -o "$ ANSWER" = yes]
- Mit [[ können Sie dies als schreiben
if [[ $ ANSWER = ~ ^ y (es)? ]]
- Sie können sogar auf die erfassten Gruppen zugreifen, die in BASH_REMATCH gespeichert sind.
- Zum Beispiel wäre $ {BASH_REMATCH [1]} "es", wenn Sie oben ein vollständiges "ja" eingeben.
- Sie erhalten die Mustererkennung aka Globbing kostenlos.
- Vielleicht sind Sie weniger streng im Schreiben von Ja. Vielleicht bist du okay, wenn der Benutzer y-irgendetwas eingibt. Haben Sie sich versichert:
- wenn $ ANSWER = y *
- Dieser Befehl ist nicht POSIX-compliant