ฉันคาดหวังcat <(cat)
และcat | cat
ทำสิ่งเดียวกัน: คัดลอกบรรทัดจาก stdin ไปยัง stdout ความเข้าใจของฉันคือการที่ทั้งสองจะดำเนินการcat
ใน subshell การเปลี่ยนเส้นทาง subshell cat
's stdout เพื่อไปป์ที่มีชื่อชั่วคราวและจากนั้นดำเนินการอื่นcat
ในเปลือกปัจจุบันกับ stdin มันเปลี่ยนเส้นทางไปยังท่อ
แต่cat <(cat)
ช่วยให้ฉันพิมพ์ที่ terminal ของฉัน แต่ไม่มีเส้นที่นำเข้าได้รับการคัดลอกและ^D
ล้มเหลวในการส่งสัญญาณEOF
; cat | cat
ทำงานได้ตามที่คาดหวัง
จากการทดสอบเพิ่มเติมฉันได้ตรวจสอบว่าcat =(cat)
มีปัญหาคล้ายกันcat <(cat)
แต่ใช้งานได้ตามที่คาดไว้: stdin ทั้งหมดไปจนถึงการ^D
คัดลอกไปยัง stdout ในครั้งเดียว
ใครสามารถช่วยฉันเข้าใจสิ่งที่ zsh กำลังทำอยู่ภายใต้ประทุน?