nếu tôi muốn hiển thị "aaa" trên màn hình:
(1)$: echo aaa | cat ... works OK
(2)$: echo aaa | ( cat ) ... works OK
(3)$: echo aaa | ( cat & ) ... NOT working
(4)$: ( echo aaa & ) | cat ... works OK
(5)$: echo aaa | ( cat <&0 & ) ... works ok in BASH (but not in SH)
(6)$: echo aaa | ( cat <&3 & ) 3<&0 ... works ok in BASH and SH
sự kết hợp từ (3) và (4) -> quá trình tách rời vẫn có đầu ra được kết nối có thể được kiểm soát, sử dụng, chuyển hướng ..., nhưng không được nhập!
Câu hỏi của tôi là: có ai hiểu tại sao và làm thế nào dòng (5) hoạt động không ???
... "<& 0" là viết tắt của "0 <& 0", tại sao chuyển hướng 0 đến 0 là giải pháp và điều gì thực sự xảy ra đằng sau với đầu vào của quá trình tách rời. Subshell không phải là vấn đề, sử dụng dấu ngoặc nhọn {...} thay vì (...) cung cấp kết quả tương tự.
... Và câu hỏi 2: có giải pháp nào tốt hơn cho "đưa đầu vào cho quá trình tách rời" so với dòng (6).