Saya ingin menghapus beberapa program melalui skrip bash. Setelah saya menjalankan perintah, terminal bertanya apakah saya yakin saya ingin menghapusnya. Jadi saya perlu menjawab y
. Saya ingin melakukannya secara otomatis dan menjawab y
setelah penundaan 10 detik.
Saya melakukan contoh ini tetapi tidak berhasil -
#!/usr/bin
/opt/MNG/MNGVIEWHP/fe/uninstall
sleep 10
echo "y"
Ada ide? Centos 7.2
#! /bin/bash -
bukannya#!/usr/bin
uninstall
program menerima parameter atau skrip konfigurasi atau tidak. Akan lebih mudah seperti ituuninstall
dan tunggu sampai keluar. Kemudian tidur 10 detik. Kemudian gemay\n
ke stdout (yang masih terhubung ke terminal, bukan ke stdin dari program apa pun)Jawaban:
Untuk itulah
yes
perintah itu. Ini menghasilkany
satu per baris tanpa batas sehingga dapat disalurkan ke perintah yang menanyakan pertanyaan ya / tidak.Itu menjawab
y
semua pertanyaan. Untuk menjawabn
semua pertanyaan, gantiyes
denganyes n
. Untuk campurany
dann
, Anda dapat menggantiyes
dengan:Atau jalankan sebagai:
Jika Anda perlu jawaban tidak tersedia untuk dibaca sebelum 10 detik, Anda akan melakukannya:
Tapi itu mungkin tidak perlu, ketika kita menulis
y
ke pipa, itu akan ada di sana untukuninstall
membacanya kapan pun dia ingin membacanya, tidak mungkin Anda harus menunggu sampai siap untuk membacanya. Pengecualiannya adalah jikauninstall
memutuskan untuk menyiram input sebelum mengajukan pertanyaan.Semua orang menganggap
uninstall
perintah hanya membaca setiap jawaban sebagai satu baris input dari input standarnya.Untuk kasus yang lebih kompleks, di mana perintah membaca jawaban langsung dari perangkat tty atau di mana Anda perlu jawaban pakan kondisional (misalnya berdasarkan apa output perintah), yang mana Anda akan menggunakan hal-hal seperti
expect
atauzsh
'szpty
.Perhatikan bahwa banyak program interaktif dapat memasuki beberapa mode non-interaktif ketika melewati beberapa opsi. Anda mungkin ingin memeriksa manualnya terlebih dahulu, sebelum menghabiskan terlalu banyak upaya untuk menyelesaikan masalah.
sumber
echo "y"
, setiap kali, kami menulisy<newline>
, mensimulasikan Anda menekany
diikuti oleh Enter. Jika Anda ingin mensimulasikan menekan Enter sendirian, itu akan memberi makan baris kosong, jadiprintf '%s\n' y n '' 2 3
(di mana''
baris kosong).