0

Stéphane commented that

A && B || C cannot be used in place of proper if then else fi

Can someone explain what's the difference?

1 Answers1

1

It is very easy to make a mistake in cases like A && B || C.

They are almost universally "write only" - once you wrote such compound statement and it works - it is difficult to change some parts of such statement without loosing the whole logic.

If A or B commands are not a one-word commands - such compound statement can become extremely long and difficult to read, since you would need to horizontally scroll the line.

If A or B - are commands with parameters, then you will have problems with finding && and || in the long lines of words. Again difficulties to understand and maintain.

If you have something like

make && run_test

That is fine. But that is actually an extent of usability. Anything more - better be rewritten to if then fi

White Owl
  • 5,129
  • You cant use \ to break A && B || C across multiple lines. I'm use to programming with monads so this is natural https://topaz.github.io/paste/#XQAAAQBOAAAAAAAAAAAFGTH0Q/5dPoIBanK0lQdPubviXoHoVCPrBYPgbwKEW/0peR3Vnsq+h2ewq3AYM9Gst+SO2PKsF3QD/UIcyt//8XYQAA== – Tom Huntington Nov 09 '23 at 23:43
  • 1
    @TomHuntington Bash lets you break lines immediately after && and ||, just like it does with pipe |. No bashslashes required. If the B and C commands are wrapped in { } or ( ) they can be multi-line as for any other pipeline. Not saying this is a good idea, only that syntax and long lines are not the issue here. – Paul_Pedant Nov 10 '23 at 11:08