Bash wertet die logischen Operatoren so aus, dass && immer Vorrang hat. Zum Beispiel:
false || echo 1 && echo 2
1
2
Und
true || echo 1 && echo 2
2
Ok. Nehmen wir also an, ich möchte, dass die Ausgabe so aussieht:
false || (echo 1 && echo 2)
Aber ohne eine Untershell aufzurufen.
Die einzige Lösung, die mir einfällt, ist diese:
false || if true; then echo 1; echo 2; fi
1
2
Gibt es eine sauberere Möglichkeit, ähnlich den Klammern in C, Befehle zu gruppieren, ohne eine Subshell aufrufen zu müssen?
Antwort1
false || { echo 1 && echo 2; }