GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa menanggapi permintaan dalam skrip Linux Bash secara otomatis?

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

Linux
  1. Bagaimana menjalankan perintah bash Linux dalam skrip PERL?

  2. Bagaimana Cara Mempersingkat Bash Prompt di Linux?

  3. Bagaimana Menambahkan Pengguna Unix/linux Dalam Skrip Bash?

  1. Bagaimana saya bisa menjalankan skrip Perl sebagai daemon sistem di linux?

  2. Bagaimana saya bisa menghubungkan file di Linux?

  3. Bagaimana cara mengecek akses internet menggunakan skrip bash di linux?

  1. Cara Menggunakan Kata Sandi Terenkripsi di Linux Bash Shell Script

  2. Skrip bash Linux untuk mengekstrak alamat IP

  3. Bagaimana saya bisa menjalankan skrip node js saya secara otomatis menggunakan penjadwal di server