Coba ini:
echo -e "yes\nyes\nno" | /path/to/your/script
Dari help echo
:
-e
:aktifkan interpretasi tanda garis miring terbalik berikut
Menyalurkan ke Masukan Standar
Beberapa skrip dapat mengambil balasan dari input standar. Salah satu dari banyak cara untuk melakukannya adalah:
$ printf "%s\n" yes yes no | ./foo.sh
yes yes no
Ini sederhana dan mudah dibaca, tetapi bergantung pada cara internal skrip Anda menangani input standar, dan jika Anda tidak dapat mengedit skrip target, terkadang itu bisa menjadi masalah.
Gunakan Harapan untuk Perintah Interaktif
Meskipun terkadang Anda dapat menggunakan input standar, petunjuk interaktif umumnya lebih baik ditangani oleh alat seperti Harapkan. Misalnya diberi script foo.sh , Anda dapat menulis foo.exp untuk mengotomatiskannya.
Catatan:Anda juga dapat menggunakan autoexpect untuk membuat skrip dari sesi interaktif, yang kemudian dapat Anda edit jika perlu. Saya sangat merekomendasikan ini untuk orang yang baru di Harapkan.
Skrip Bash:foo.sh
Ini adalah skrip yang mungkin ingin Anda otomatisasi.
#!/usr/bin/env bash
for question in Foo Bar Baz; do
read -p "${question}? "
replies=("${replies[@]}" "$REPLY")
done
echo "${replies[@]}"
Skrip Harapan:foo.exp
Berikut adalah skrip Harapan sederhana untuk mengotomatiskan skrip Bash di atas. Harapkan loop, percabangan, dan ekspresi reguler dapat memberikan lebih banyak fleksibilitas daripada yang ditunjukkan oleh contoh yang disederhanakan ini, tetapi melakukannya tunjukkan betapa mudahnya skrip Harapan minimal!
#!/usr/bin/env expect
spawn -noecho /tmp/foo.sh
expect "Foo? " { send -- "1\r" }
expect "Bar? " { send -- "2\r" }
expect "Baz? " { send -- "3\r" }
interact
Contoh Sesi Interaktif
Seperti inilah tampilan sesi interaktif Anda saat Anda menjalankan skrip Expect. Itu akan menelurkan skrip Bash Anda, dan merespons seperti yang diinstruksikan untuk setiap perintah yang berbeda.
$ /tmp/foo.exp
Foo? 1
Bar? 2
Baz? 3
1 2 3