Saya memiliki executable yang memulai shell interaktif-pengguna. Saya ingin, setelah meluncurkan shell, menyuntikkan beberapa perintah terlebih dahulu, kemudian memungkinkan pengguna untuk memiliki sesi interaktif mereka. Saya dapat melakukan ini dengan mudah menggunakan echo
:
echo "command 1\ncommand 2\ncommand3" | ./shell_executable
Ini hampir berhasil. Masalahnya adalah bahwa perintah gema yang memberi makan stdin proses hits EOF setelah selesai menggandakan perintah saya. EOF ini menyebabkan shell untuk segera mengakhiri (seolah-olah Anda menekan Ctrl + D di shell).
Apakah ada cara untuk menyuntikkan perintah ini ke stdin tanpa menyebabkan EOF sesudahnya?
shell-script
pipe
stdin
Jason R
sumber
sumber
./shell_executable
ke akhir daftar perintah? Itu mungkin membuatnya tetap berjalan, meskipun Anda akan memiliki dua instance berjalan (orang tua & anak).Jawaban:
Menemukan jawaban pintar ini dalam pertanyaan serupa di stackoverflow
(echo -e "cmd 1\ncmd 2" && cat) | ./shell_executable
Ini caranya.
cat
akan memompa dalam outputecho
ke input stream dari shell_executable dan menunggu lebih banyak input hingga EOF.sumber
cmd 1
ditulis kembali tetapi tidak menyadari bahwa itu seharusnya adalah o / p yang dihasilkan olehcmd 1
Cara yang paling bersih untuk melakukan ini adalah mungkin untuk mencari sesuatu seperti
bash
's--rcfile
pilihan. Masukkan perintah khusus Anda ke file kustom Anda dan berikan ke shell interaktif untuk dijalankan saat start-up.Jika tidak ada opsi seperti itu, Anda juga dapat mencoba yang berikut:
cat
akan diartikan-
sebagai stdin.sumber