Difference between && and || operator in Bash

Mubashir Ali :

This is confusing me.

false || echo "Oops, fail" # Oops, fail
true || echo "Will not be printed" #
true && echo "Things went well" # Things went well
false && echo "Will not be printed" #

true return 0 exit code and false returns 1. I am unable to understand how || and && are working. Do both of them work on exit codes or the actual output of the command? What is the difference between && and || operator here?

The above code snippet is from the missing semester of your CS education lecture 2.

chepner :

x && y executes x, then only executes y if x succeeds (i.e., has an exit status of 0)

x || y executes x, then only executes y if x fails (i.e., has a non-zero exit status)

The output of x is irrelevant.

One place they do not differ is in precedence. Unlike Boolean operators in other languages, && and || have equal precedence, so something like

a || b && c

is parsed and evaluated the same as

{ a || b; } && c

rather than

a || { b && c; }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=33086&siteId=1