Theo tôi hiểu tài liệu bash cả | và <chuyển hướng stdin. Vì vậy, cmd | foo
và foo < <(cmd)
nên tương đương nhiều hay ít. Tuy nhiên, đối với lệnh đọc bash-Internal, điều này dường như không phải là trường hợp. Ví dụ, nếu tôi nhập
a=""; b=""; read a b < <(echo a b); echo $a $b
nó in ra a b
, trong khi
a=""; b=""; echo a b | read a b; echo $a $b
in ra không có gì. Mặt khác, nếu tôi nhập
a=""; b=""; cat < <(echo a b) >foo1
a=""; b=""; echo a b | cat > foo2
các tập tin foo1 và foo2 hoàn toàn giống nhau. Vì vậy, câu hỏi của tôi là: sự khác biệt với cả hai hình thức khi lệnh đọc có liên quan (hoặc nói chung) là gì? Họ sẽ thấy chính xác đầu vào được chuyển hướng tương tự. Trong khi < <(...)
biểu mẫu hoạt động, tôi thấy nó khá khó đọc và rất thích sử dụng biểu mẫu ống.