Gli operatori di reindirizzamento "<<" e "<< -" consentono entrambi il reindirizzamento delle righe contenute in un file di input della shell, noto come "documento qui", all'input di un comando.
Il documento qui deve essere trattato come una singola parola che inizia dopo la successiva e continua fino a quando non vi è una riga contenente solo il delimitatore e una, senza caratteri in mezzo. Quindi inizia il prossimo documento qui, se ce n'è uno. Il formato è il seguente:
[n]<<word
here-document
delimiter
dove n opzionale rappresenta il numero del descrittore di file. Se il numero viene omesso, il documento qui si riferisce all'input standard (descrittore di file 0).
Se viene citato un carattere in una parola, il delimitatore deve essere formato eseguendo la rimozione della citazione in parola e le righe del documento qui non devono essere espanse. Altrimenti, il delimitatore deve essere la parola stessa.
Se non vengono citati caratteri in parola, tutte le righe del documento qui devono essere espanse per l'espansione dei parametri, la sostituzione dei comandi e l'espansione aritmetica. In questo caso, l'in input si comporta come le doppie virgolette interne (vedere le virgolette doppie). Tuttavia, il carattere tra virgolette doppie ('"') non deve essere trattato in modo particolare all'interno di un documento qui, tranne quando la virgoletta doppia appare tra" $ () "," `` "o" $ {} ".
Se il simbolo di reindirizzamento è "<< -", tutti i <tab>
caratteri iniziali devono essere rimossi dalle righe di input e dalla riga contenente il delimitatore finale. Se su una riga è specificato più di un operatore "<<" o "<< -", il documento qui associato al primo operatore deve essere fornito per primo dall'applicazione e deve essere letto per primo dalla shell.
Quando un documento qui viene letto da un dispositivo terminale e la shell è interattiva, deve scrivere il contenuto della variabile PS2, elaborata come descritto in Variabili di shell, a un errore standard prima di leggere ogni riga di input fino a quando il delimitatore non viene riconosciuto.
Alcuni esempi non ancora forniti.
Sfortunatamente, questo non funziona per i caratteri spaziali: POSIX ha favorito il tab
rientro qui. Yikes.
cat
. Provapsql ... << EOF ...
Vedi anche "qui stringhe". mywiki.wooledge.org/BashGuide/InputAndOutput?#Here_Strings