Les opérateurs de redirection "<<" et "<< -" permettent tous deux de rediriger des lignes contenues dans un fichier d'entrée shell, appelé "ici-document", vers l'entrée d'une commande.
Le document ici doit être traité comme un seul mot qui commence après le suivant et continue jusqu'à ce qu'il y ait une ligne contenant uniquement le délimiteur et a, sans aucun caractère entre les deux. Ensuite, le prochain document ici commence, s'il y en a un. Le format est le suivant:
[n]<<word
here-document
delimiter
où le n facultatif représente le numéro de descripteur de fichier. Si le nombre est omis, le document ici fait référence à l'entrée standard (descripteur de fichier 0).
Si un caractère dans word est cité, le délimiteur doit être formé en effectuant la suppression des guillemets sur word, et les lignes du document ne doivent pas être développées. Sinon, le délimiteur sera le mot lui-même.
Si aucun caractère dans le mot n'est cité, toutes les lignes du document ici doivent être développées pour l'expansion des paramètres, la substitution de commandes et l'expansion arithmétique. Dans ce cas, l'entrée se comporte comme des guillemets internes (voir Double-guillemets). Cependant, le caractère guillemet double ('"') ne doit pas être traité spécialement dans un document ici, sauf lorsque le guillemet double apparaît dans" $ () "," `` "ou" $ {} ".
Si le symbole de redirection est "<< -", tous les <tab>
caractères de tête doivent être supprimés des lignes d'entrée et de la ligne contenant le délimiteur de fin. Si plusieurs opérateurs "<<" ou "<< -" sont spécifiés sur une ligne, le document associé au premier opérateur doit être fourni en premier par l'application et doit être lu en premier par le shell.
Lorsqu'un document ici est lu à partir d'un terminal et que le shell est interactif, il doit écrire le contenu de la variable PS2, traité comme décrit dans Variables du shell, dans l'erreur standard avant de lire chaque ligne d'entrée jusqu'à ce que le délimiteur ait été reconnu.
Quelques exemples pas encore donnés.
Malheureusement, cela ne fonctionne pas pour les caractères d'espace: POSIX a favorisé l' tab
indentation ici. Oui.
cat
. Essayezpsql ... << EOF ...
Voir aussi "ici les chaînes". mywiki.wooledge.org/BashGuide/InputAndOutput?#Here_Strings