Diberikan contoh minimal ini
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; )
itu menghasilkan LINE 1dan kemudian, setelah satu detik, menghasilkan LINE 2, seperti yang diharapkan .
Jika kita menyalurkan ini ke grep LINE
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep LINE
perilakunya sama seperti dalam kasus sebelumnya, seperti yang diharapkan .
Jika, sebagai alternatif, kami pipa ini ke cat
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | cat
sekali lagi tingkah lakunya sama, seperti yang diharapkan .
Namun , jika kita menyalurkan ke grep LINE, dan kemudian ke cat,
( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep LINE | cat
tidak ada output sampai satu detik berlalu, dan kedua garis segera muncul pada output, yang tidak saya harapkan .
Mengapa ini terjadi dan bagaimana saya bisa membuat versi terakhir untuk berperilaku dengan cara yang sama seperti tiga perintah pertama?
catcukup membaca stdindan menghasilkan stdout. Tentu saja, saya datang dengan pertanyaan ini dengan banyak hal rumit di tempat echodan cat, tetapi ini ternyata tidak relevan, karena masalah muncul dengan contoh yang jauh lebih sederhana.
catmenggabungkan file. Apa yang ingin Anda lakukan dengan menyalurkancat?