Ich erwartete cat <(cat)und sollte cat | catdasselbe tun: Zeilen von stdin nach stdout kopieren. Mein Verständnis war, dass beide a catin einer Subshell ausführen , die catstdout der Subshell auf eine temporäre Named Pipe umleiten und dann eine andere catin der aktuellen Shell ausführen, deren stdin auf die Pipe umgeleitet wird.
cat <(cat)Lassen Sie mich stattdessen an meinem Terminal tippen, aber keine der Eingabezeilen wird kopiert und es wird ^Dkein Signal EOFausgegeben. cat | catfunktioniert aber wie erwartet.
Als weiteres Experiment habe ich geprüft, ob cat =(cat)ähnliche Schwierigkeiten wie cat <(cat)vorliegen, aber es funktioniert wie erwartet: Bis zu einem ^Dwird alles auf einmal auf stdout kopiert.
Kann mir jemand helfen zu verstehen, was zsh unter der Haube tut?