Ho visto spesso questo costrutto negli script e l'ho usato io stesso, ma mi dà fastidio il fatto di non riuscire a trovarlo nella documentazione.
Esempio:
[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."
Questo potrebbe anche essere fatto con le barre inverse prima delle nuove righe, come menzionato in man bash :
If a <newline> pair appears, and the backslash is not
itself quoted, the <newline> is treated as a line continuation (that
is, it is removed from the input stream and effectively ignored).
Esempio:
[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."
...ma questo non sembra essere necessario. La prima versione sopra funziona anche senza i backslash.
Dove posso trovarlo in man bash ? (Inoltre, questo è bash specifico o conforme a POSIX?)
Risposta accettata:
Una nuova riga viene ignorata in alcuni contesti in cui è presente un comando manifestamente non terminato. Questi contesti includono dopo un operatore di controllo (&& , || , | , & , ; , ;; , ma non ! ).
Non vedo questo documentato nel manuale di bash.
In POSIX, è specificato tramite le regole grammaticali. Ovunque le regole abbiano linebreak , puoi avere zero o più interruzioni di riga.