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í? ¿ bash
Primero procesa todo lo demás (parte here-doc) y como paso final se ve la > conf
parte?
bash
shell
here-document
Martín
fuente
fuente
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 ?open
fue 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
bash
crea el proceso para ejecutarsecat
, se abreconf
para 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 deexec
iniciar 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