Kode Anda tidak menyertakan apa pun yang menulis ke stdin proses anak Anda, jadi saya akan terkejut jika Anda mendapatkan elipsis yang menunjukkan perintah tidak lengkap padahal sebenarnya Anda tidak mengirim perintah sama sekali - tidak lengkap atau sebaliknya.
Yang telah dikatakan, banyak utilitas baris perintah berperilaku berbeda ketika mereka menemukan terminal nyata yang terhubung ke stdin/stdout mereka. Misalnya. git log
akan menampilkan hasil ketika Anda menjalankannya secara langsung tetapi tidak ketika Anda menyalurkan hasilnya ke beberapa perintah lain seperti git log | cat
jadi ini mungkin juga terjadi di sini.
Ini juga berkaitan dengan buffering - jika aliran Anda memiliki buffer baris, Anda tidak akan melihat baris apa pun yang tidak langsung diakhiri dengan baris baru.
Pertanyaan sebenarnya adalah:apakah Anda melihat >
mengingatkan? Apakah Anda mengirim perintah apa pun ke cangkang mongo?
Membuat skrip alat CLI interaktif bisa jadi rumit. Misalnya. lihat apa yang harus saya lakukan untuk menguji program interaktif yang sangat sederhana di sini:
Saya harus membuat dua pipa bernama, pastikan stdin, stderr dan stdout tidak buffer, dan kemudian gunakan beberapa trik lain untuk membuatnya bekerja. Ini adalah skrip shell tetapi hanya untuk menunjukkan kepada Anda sebuah contoh.