The right side of && will only</strong> be evaluated if the exit status of the left side is zero.</strong> || is the opposite: it will evaluate the right side only if the left side exit status is nonzero.</strong> You can consider [ ... ] to be a program with a return value. If the test inside evaluates to true</strong>, it returns zero</strong>; it returns nonzero otherwise.</strong>

$ false && echo howdy!

$ true && echo howdy!
$ true || echo howdy!

$ false || echo howdy!