Di sini-Dokumen adalah semacam pengalihan shell, sehingga shell akan melakukan pengalihan seperti biasa, dari awal hingga akhir (atau dari kiri ke kanan, atau urutan penampilan). Ini ditentukan oleh POSIX:
Jika lebih dari satu operator pengalihan ditentukan dengan perintah, urutan evaluasi adalah dari awal hingga akhir.
Pada perintah Anda, cat
akan melakukan > conf
pertama, membuka dan memotong conf
file untuk menulis, kemudian membaca data dari Here-Document
.
Menggunakan strace
, Anda dapat memverifikasinya:
$ 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
ini bahwa sebelum mengeksekusicat
para stdout dari shell terhubung ke file bernamafile_name
dan kemudian stdin dari shell terhubung ke sini-doc ?