En el siguiente comando cat toma el contenido de here-doc y lo redirige a un archivo llamado conf:
cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
¿Cómo entender el orden de los comandos aquí? ¿ bashPrimero procesa todo lo demás (parte here-doc) y como paso final se ve la > confparte?
bash
shell
here-document
Martín
fuente
fuente

cat > file_name << blahque antes de ejecutarcatel stdout de shell esté conectado al archivo nombradofile_namey luego stdin of shell esté conectado a here-doc ?openfue llamado antesdup2.Bueno, descubramos:
Dang Supongo que debe estar haciendo la
>"$file"parte primero entonces. Pero que si...?...No hay error...?
Como parece, el orden importa.
fuente
Cuando se
bashcrea el proceso para ejecutarsecat, se abreconfpara escribir en el descriptor de archivo 1 y abre un archivo temporal (para el documento aquí) para leer en el descriptor de archivo 0, antes deexeciniciar el programa. En este caso, realmente no importa en qué orden suceden esas acciones.El orden se vuelve significativo cuando se reasignan los descriptores de archivo, por ejemplo, con
2>&1.fuente