Es gibt einen großen Unterschied zwischen der Verwendung einer einzelnen Pipe (Pipe-Ausgabe von einem Befehl, der als Eingabe für den nächsten Befehl verwendet werden soll) und einer Prozesssteuerung OR (Doppelpipeline).
cat /etc/issue | less
Dies läuft die Katze Befehl auf der Datei/etc/Ausgabe-Datei, und anstatt sofort die Ausgabe sendet es an stdout ist verrohrt der Eingang für den weniger Befehl zu sein. Ja, das ist kein gutes Beispiel ist, da man stattdessen einfach weniger/etc/issue tun könnte - aber zumindest kann man sehen, wie es
touch /etc/testing || echo Did not work
Für diese Arbeiten wird der Touch-Befehl ausführen, oder versucht, zu rennen. Wenn es einen Nicht-Null-Exit-Status hat, tritt die Doppel-Pipe ODER ein und versucht, den Echo-Befehl auszuführen. Wenn der Touch-Befehl funktioniert hat, wird die andere Wahl (unser Echo-Befehl in diesem Fall) niemals versucht ...
Sie bedeuten völlig verschiedene Dinge. | ist Rohrleitungsdaten. || ist ein oder. – ceejayoz
Was soll 'set e' tun? – melpomene
https://www.gnu.org/software/bash/manual/bashref.html – melpomene