Here-Document es un tipo de redirección de shell, por lo que el shell lo realizará como redireccionamiento normal, de principio a fin (o de izquierda a derecha, u orden de aparición). Esto está definido por POSIX:
Si se especifica más de un operador de redirección con un comando, el orden de evaluación es de principio a fin.
En su comando, cat
realizará > conf
primero, abrirá y truncará el conf
archivo para escribir, luego leerá los datos Here-Document
.
Utilizando strace
, puedes verificarlo:
$ strace -f -e trace=open,dup2 sh -c 'cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
'
...
open("conf", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
dup2(3, 0) = 0
...
cat > file_name << blah
que antes de ejecutarcat
el stdout de shell esté conectado al archivo nombradofile_name
y luego stdin of shell esté conectado a here-doc ?