Mengapa `echo bash | bash` segera keluar?
Oct 05 2020
Semua operasi berikut adalah operasi tanpa efek:
echo bash | bash
echo dash | dash
echo "bash -c bash" | bash
echo "dash -c dash" | dash
Mengapa? Untuk baris pertama, misalnya, saya akan berasumsi bahwa hal itu akan membuat contoh bash, dan kemudian itu akan membuat contoh pesta lain menunggu input. Tapi itu tidak menunggu masukan; itu keluar. Pesta induk juga keluar. Jadi kedua contoh bash keluar dan saya kembali ke contoh shell mana pun saya meluncurkan perintah ini. Di mana saya salah?
Jawaban
7 user414777 Oct 05 2020 at 12:45
Contoh pesta kedua tidak menunggu masukan dari stdin nya (yang merupakan pipa yang sama bashstring yang dibacakan dari), tetapi hanya mendapat EOF segera setelah echoproses telah keluar dan akhir penulisan pipa telah ditutup.
Anda juga dapat mencoba memberikan beberapa masukan untuk pesta kedua:
(echo bash; echo echo hjello) | bash
hjello
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'