Oui, la norme POSIX le permet. Selon la version 2008 :
Le document ici présent est traité comme un mot unique qui commence après le mot suivant <newline>
et continue jusqu'à ce qu'il y ait une ligne contenant seulement le délimiteur et un <newline>
sans <blank>
des personnages entre les deux. Ensuite, le document suivant commence, s'il y en a un.
Et comprend cet exemple de plusieurs "documents ici" dans la même ligne :
cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2
Il n'y a donc aucun problème pour faire des redirections ou des tuyaux. Votre exemple ressemble à quelque chose comme ceci :
cat file |
cmd
Et la grammaire de l'interpréteur de commandes (plus bas sur la page liée) comprend ces définitions :
pipe_sequence : command
| pipe_sequence '|' linebreak command
newline_list : NEWLINE
| newline_list NEWLINE
;
linebreak : newline_list
| /* empty */
Ainsi, un symbole de tuyau peut être suivi d'une fin de ligne et être considéré comme faisant partie d'un pipeline.
0 votes
Je suis venu ici pour trouver un bon moyen de diviser ceci en plusieurs lignes :
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
. La "syntaxe bizarre" semble être la meilleure solution.0 votes
Un cas d'utilisation pratique est celui où vous essayez de convertir un tableau délimité par des espaces en un tableau délimité par des tabulations afin de pouvoir le coller dans Google Spreadsheets. Vous n'aurez pas à créer de fichier temporaire.
0 votes
Le premier n'a pas fonctionné pour moi dans z-shell. Je n'aime pas la 2ème parce qu'elle aliène le | de la commande, perdant l'idiome ( ?) des pipelines shell.