GNU/Linux >> Linux Esercitazione >  >> Linux

Continuazioni della linea Bash dopo &&e || Documentato?

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.


Linux
  1. Scrivere commenti negli script Bash:commenti a riga singola, in linea e a più righe

  2. Cronologia di Bash senza numeri di riga

  3. Shell Script, letto sulla stessa riga dopo aver ripetuto un messaggio

  4. Limite della linea Shebang nel kernel bash e linux

  5. Bash - Comando data e spazio

Come commentare in Bash

Sintassi ed esempi dell'istruzione Bash case

Come leggere i file riga per riga in Bash

Come leggere un file riga per riga in Bash

Bash pausa e continua

Comando di uscita Bash e codici di uscita