|
|
| Zeile 32: |
Zeile 32: |
| *[[Bash printf]] | | *[[Bash printf]] |
|
| |
|
| =Das neue Test Kommando=
| | *[[Bash Das neue Test Kommando]] |
| *"[[" ist Bashs Verbesserung des "[" Befehls.
| |
| *Es ist die bessere Wahl, wenn Sie Skripte schreiben, die auf Bash abzielen. Meine Favoriten sind:
| |
| *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.
| |
| <pre>
| |
| if [ -f "$ FILE"]
| |
| </pre>
| |
| *um leere Zeichenfolgen oder Dateinamen mit Leerzeichen richtig zu behandeln. Mit "[[" sind die Anführungszeichen unnötig:
| |
| <pre>
| |
| if [[ -f $ FILE ]]
| |
| </pre>
| |
| *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
| |
| <pre>
| |
| if ["$ ANSWER" = y -o "$ ANSWER" = yes]
| |
| </pre>
| |
| *Mit [[ können Sie dies als schreiben
| |
| <pre>
| |
| if [[ $ ANSWER = ~ ^ y (es)? ]]
| |
| </pre>
| |
| *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 *
| |
|
| |
|
| =Links= | | =Links= |