Here-Document - это своего рода перенаправление оболочки, поэтому оболочка будет выполнять его как обычное перенаправление с начала до конца (или слева направо, или в порядке появления). Это определяется POSIX:
Если с помощью команды указано более одного оператора перенаправления, порядок оценки - от начала до конца.
По вашей команде сначала cat
выполните > conf
, откройте и обрежьте conf
файл для записи, затем прочитайте данные из Here-Document
.
Используя strace
, вы можете проверить это:
$ 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
является то , что перед выполнениемcat
на стандартный вывод из оболочки связан с файл с именем ,file_name
а затем стандартный ввод оболочки подключается к здесь-документ ?