Bash は && が常に優先されるように論理演算子を評価します。たとえば、次のようになります。
false || echo 1 && echo 2
1
2
そして
true || echo 1 && echo 2
2
わかりました。では、出力を次のようにしたいとします。
false || (echo 1 && echo 2)
ただし、サブシェルは呼び出さない。
私が思いつく唯一の解決策は次のとおりです。
false || if true; then echo 1; echo 2; fi
1
2
C の括弧のように、サブシェルを呼び出さずにコマンドをグループ化するよりクリーンな方法はありますか?
答え1
false || { echo 1 && echo 2; }