мне казалось, что cat <<EOF
x
EOF
раскрывается в "cat /tmp/abyrvalg", а в этом файле записано х
но нет, файл создается, его содержимое улетает в пайп и пайп передается процессу (ок, не передается, а недоубивается при форке, не будем занудствовать) на вход.