
Ich kann nur einfache Ausdrücke wie1=1 and 0=1
test 1 = 1 -a 0 = 1
Aber wie erstellt man komplexe Ausdrücke wie 1=1 and (0=1 or 1=1)
?
Antwort1
Verwenden Sie entweder mehrere Testanrufe:
test 1 = 1 && test 0 = 1 -o 1 = 1
oder [[:
[[ 1 = 1 && (0 = 1 || 1 = 1) ]]
Antwort2
test
Sie können „oder [
...“ verwenden, ]
solange Sie vorsichtig sind und daran denken, dass Klammern maskiert und Begriffe durch Leerzeichen getrennt werden müssen:
if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi
Das klingt für mich nach „Ja“. Normalerweise ist es jedoch einfacher, stattdessen den Bash- und Korn-Shell- Operator [[
... zu verwenden ]]
. Sie müssen nicht so oft Escape-Befehle ausführen.
Antwort3
Die Frage wurde bereits beantwortet, aber hier sind ein paar Stiltipps, die Sie berücksichtigen (und vielleicht auch ablehnen :-) ) könnten:
Wenn Sie derjenige sind, der es schreibt, und es verwirrend finden, dann vielleicht:
- Verwenden Sie zusätzliche (), auch wenn sie nicht benötigt werden. Das könnte für mehr Klarheit sorgen.
- Verwenden Sie möglicherweise auch verschachtelte Schleifen anstelle vieler und-Anweisungen.
Antwort4
Florian hat oben größtenteils Recht, aber bedenken Sie, dass Bash auch eine arithmetische Erweiterung hat, die beim Vergleichen von Variablen etwas angenehmer ist.
SehenHierFür mehr Information.