Zusammengesetzte if-Anweisungen mit mehreren expressions in der Bash
Ich würde gerne neu erstellen, so etwas wie dieses
if ( arg1 || arg2 || arg 3) {}
und ich habe so weit gekommen, aber ich bekomme die folgende Fehlermeldung
line 11: [.: command not found
if [ $char == $';' -o $char == $'\\' -o $char == $'\'' ]
then ...
Ich habe versucht, verschiedene Möglichkeiten, aber keine scheint zu funktionieren einige von denen, die ich versuchte
- Wahrscheinlich gibt es keine Notwendigkeit zu verwenden
$''
. - Mit
==
innerhalb von[ ]
ist nicht wirklich gültig, POSIX-sh, auch wenn die bash erlaubt es. Die Verwendung nur einer einzelnen=
für string-Vergleich tests.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die bash-Shell verwenden, können Sie die
[[ ]]
form eher als[ ]
, die es erlaubt&&
und||
intern:Ansonsten können Sie die üblichen booleschen logischen Operatoren extern:
...oder Operatoren spezifisch für die
test
Befehl (obwohl moderne Versionen der POSIX-Spezifikation beschreiben das XSI-Erweiterung als veraltet-siehe ANWENDUNG in Abschnitt):...das ist eine andere schriftliche form der folgenden, die ähnlich veraltet:
Charles' Antwort ist richtig, dass es zeigt Ihnen, wie logische Operationen auf Funktionen (und, ohne, für diese Angelegenheit) eine
if
Aussage, aber es sieht mehr aus wie Sie verwenden möchtencase
hier:Bash ist
[[ ]]
und(( ))
sind leistungsfähiger und flexibler als[ ]
.[[ ]]
ist für strings und(( ))
ist für integer-Logik und Arithmetik&&
und||
Operatoren können verwendet werden innen[[ ]]
und(( ))
, und()
können verwendet werden für die Gruppierung der[[ ]]
oder(( ))
- Bash nicht tun word-splitting oder Platzhalter in diesen Kontexten(( ))
gibt es keine Notwendigkeit für eine$
hinter dem Variablennamen, um Sie zu erweitern[[ ]]
und(( ))
können sich über mehrere Zeilen erstrecken, ohne die Notwendigkeit für eine zeilenfortsetzung mit\
Mithilfe dieser, können wir schreiben sauberen, leicht lesbarer und zuverlässiger code.
Beispiele
Compound-Anweisungen mit Integer -
Zusammengesetzte Aussagen mit Streichern
[ Entsprechungen für die oben genannten Aussagen, mit {}
Verwandte