Saya menjalankan skrip yang diminta memasukkan 'y' pada setiap operasi, saya mencari solusi seperti $ ./script < echo 'yyyyyyyyyyyyyy'
untuk melewatkan semua input saya dalam satu waktu.
command-line
input
NewMrd
sumber
sumber
-f
opsi bekerja dengan baik dengan perintah tertentu.Jawaban:
Ada perintah yang dibuat khusus untuk kasus itu:
yes
Apa yang dilakukan adalah menghubungkan output
yes
ke input./script
. Jadi ketika./script
meminta input pengguna, ia akan mendapatkan outputyes
. Output dariyes
adalah aliran tanpa akhiry
diikuti oleh baris baru. Jadi pada dasarnya seolah-olah pengguna memasukkany
untuk setiap pertanyaan./script
.Jika Anda ingin mengatakan tidak (
n
) alih-alih ya (y
), Anda dapat melakukannya seperti ini:Perhatikan bahwa beberapa alat memiliki opsi untuk selalu menganggap
yes
sebagai jawaban. Lihat di sini misalnya: Lewati konfirmasi ya / tidak di 'apt-get upgrade'Metode lain untuk memasukkan input:
Jika Anda tahu persis berapa banyak
y
skrip yang Anda harapkan, Anda dapat melakukannya seperti ini:Baris baru (
\n
) adalah tombol enter.Menggunakan
printf
alih-alihyes
Anda memiliki kontrol input berbutir halus:Perhatikan bahwa dalam beberapa kasus yang jarang terjadi, perintah tidak mengharuskan pengguna untuk menekan enter setelah karakter. dalam hal ini tinggalkan baris baru:
Demi kelengkapan Anda juga dapat menggunakan dokumen di sini :
Atau jika shell Anda mendukungnya di sini :
Atau Anda dapat membuat file dengan satu input per baris:
Jika perintahnya cukup kompleks dan metode di atas tidak lagi cukup maka Anda dapat menggunakan harapkan .
Berikut adalah contoh skrip harapan super sederhana:
Nitpick teknis:
Doa perintah hipotetis yang Anda berikan dalam pertanyaan tidak berfungsi:
Ini karena tata bahasa shell memungkinkan operator pengalihan di mana saja di baris perintah. Sejauh menyangkut shell baris perintah hipotetis Anda sama dengan baris ini:
Itu berarti
./script
akan dipanggil dengan argumen'yyyyyyyyyyyyyy'
dan stdin akan mendapatkan input dari file bernamaecho
. Dan bash mengeluh karena file tersebut tidak ada.sumber
cannot enable tty mode on non tty input
. Apakah Anda tahu solusinya?printf
trik denganrun
file yang saya perlukan untuk mengotomatiskan proses instalasi, semua yang terjadi adalah saya mendapatkan pesan kesalahan yang mengatakanWarning: Tried to connect to session manager, None of the authentication protocols specified are supported
, dan skrip terbuka di terminal baru dan meminta saya untuk memasukkan input saya secara manual seperti biasa. Ngomong-ngomong, ini terjadi pada Debian. Ada saran?Gunakan perintah
yes
:Kutipan dari halaman manual:
sumber
Beberapa hal (
apt-get
misalnya) menerima flag khusus untuk dijalankan dalam mode senyap (dan menerima default). Dalamapt-get
hal ini, Anda hanya memberikannya sebuah-y
bendera. Ini sepenuhnya tergantung pada skrip Anda.Jika Anda membutuhkan hal-hal yang lebih rumit, Anda dapat membungkus skrip Anda dalam skrip harapan. harapkan memungkinkan Anda untuk membaca output dan mengirim input sehingga Anda dapat melakukan hal-hal yang cukup rumit yang tidak diizinkan oleh skrip lain. Ini salah satu contoh dari halaman Wikipedia-nya :
sumber
.sh
skrip shell, bukan? Atau ada jalan?Dalam skrip shell Anda juga dapat menggunakan trik spawn berikut, harapkan dan kirim
Namun dalam scenerio di atas Anda harus memberikan frasa yang Anda harapkan saat menjalankan skrip untuk lebih banyak contoh, buka tautan berikut
Harapkan dalam Bash
sumber
Oke, ini mungkin bukan solusi yang sangat elegan tetapi jika Anda menulis opsi dalam file terpisah dan meneruskannya sebagai input ke skrip, itu akan berfungsi juga. Jadi jika Anda membuat file baru dengan semua opsi Anda (sebut file ini sebagai 'options.in'), maka Anda dapat dengan mudah menjalankan skrip Anda dengan
./script.sh < options.in
dan mengedit / membuat file opsi yang berbeda sesuai kebutuhan.sumber
options.in
file? Bisakah Anda memberi contoh?Saya sedang menulis skrip bash dengan Dialog dan perlu ini terjadi secara otomatis juga. Saya melakukan ini dan itu bekerja seperti pesona.
sumber
Anda dapat memberikan input pengguna ke skrip Anda
cat
, dari file teks, disalurkan ke skrip Anda denganbash
seperti ini:Masukkan saja input pengguna yang Anda inginkan ke file input.txt Anda, apa pun jawaban yang Anda inginkan - y, n, digit, string, dll.
sumber