J'ai beaucoup vu cette construction dans des scripts et je l'ai utilisée moi-même, mais cela me dérange de ne pas pouvoir la trouver dans la documentation.
Exemple :
[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."
Cela pourrait également être fait avec des barres obliques inverses avant les nouvelles lignes, comme mentionné dans 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).
Exemple :
[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."
… mais cela ne semble pas nécessaire. La première version ci-dessus fonctionne même sans les barres obliques inverses.
Où puis-je trouver cela dans man bash
? (Aussi, est-ce bash
spécifique ou compatible POSIX ?)
Réponse acceptée :
Une nouvelle ligne est ignorée dans quelques contextes où il y a manifestement une commande non terminée. Ces contextes incluent après un opérateur de contrôle (&&
, ||
, |
, &
, ;
, ;;
, mais pas !
).
Je ne vois pas cela documenté dans le manuel bash.
Dans POSIX, il est spécifié via les règles de grammaire. Partout où les règles ont linebreak
, vous pouvez avoir zéro ou plusieurs sauts de ligne.