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.