GNU/Linux >> Tutoriales Linux >  >> Linux

Continuaciones de línea Bash después de &&y || ¿Documentado?

He visto mucho este constructo en scripts y lo he usado yo mismo, pero me molesta que parece que no puedo encontrarlo en la documentación.

Ejemplo:

[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."

Esto también podría hacerse con barras invertidas antes de las nuevas líneas, como se menciona en 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).

Ejemplo:

[ -f file1 ] && 
[ -f file2 ] && 
echo "Both files exist." || 
echo "One or the other file doesn't exist."

…pero esto no parece ser necesario. La primera versión anterior funciona incluso sin las barras invertidas.

¿Dónde puedo encontrar esto en man bash? ? (Además, ¿es esto bash ¿específico o compatible con POSIX?)

Respuesta aceptada:

Una nueva línea se ignora en algunos contextos donde manifiestamente hay un comando sin terminar. Estos contextos incluyen después de un operador de control (&& , || , | , & , ; , ;; , pero no ! ).

No veo esto documentado en el manual de bash.

En POSIX, se especifica a través de las reglas gramaticales. Siempre que las reglas tengan linebreak , puede tener cero o más saltos de línea.


Linux
  1. ¿Diferencia entre 'y' en la línea de comando (bash)?

  2. ¿Faltan cadenas después de concatenar dos o más cadenas variables en Bash?

  3. Historial de bash sin números de línea

  4. Shell Script, lea en la misma línea después de hacer eco de un mensaje

  5. Bash - Comando de fecha y espacio

Cómo comentar en Bash

Sintaxis y ejemplos de declaraciones de caso Bash

Cómo leer archivos línea por línea en Bash

Cómo leer un archivo línea por línea en Bash

Bash romper y continuar

Comando de salida de Bash y códigos de salida