Đường ống đầu tiên này hoạt động tốt (in "c"):
echo "a" | sed 's/a/b/' | sed 's/b/c/'
Điều này không làm những gì tôi mong đợi (không có gì được in khi tôi đưa "a" vào fifo của tôi):
mkfifo fifo;
cat fifo | sed 's/a/b/' | sed 's/b/c/'
Tuy nhiên, nếu tôi loại bỏ lệnh "sed" thứ hai khỏi đường ống sau, tôi sẽ nhận được "b" được in. Tôi nghĩ rằng sự hiểu biết của tôi về đường ống và chuyển hướng phải quá đơn giản. Ai đó có thể giải thích cho tôi cách khắc phục trường hợp thứ 2 để tôi có thể chạy hai lệnh liên tiếp trên nội dung của fifo không?
(lưu ý đây không phải là vấn đề cụ thể đối với fifo, hành vi tương tự cũng xảy ra với netcat. Tôi đã đăng một câu hỏi tương tự về netcat nhưng không có câu trả lời)
echo "a" >fifo
GNU sed version 4.2.1