Bagaimana cara membuat menu dalam skrip shell yang akan menampilkan 3 opsi bahwa pengguna akan menggunakan tombol panah untuk memindahkan kursor sorot dan tekan enter untuk memilih satu?
shell
shell-script
menu
Mrplow911
sumber
sumber
tput
, tapi saya pikir yang pertama tidak mungkin), tetapi Anda dapat membuat menu sederhana di bash denganselect
: tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_06.htmldialog
paket yang membuat antarmuka terminal faux-GUI dasar dalam skrip.Jawaban:
dialog adalah alat yang hebat untuk apa yang ingin Anda capai. Berikut adalah contoh menu 3 pilihan sederhana:
Sintaksnya adalah sebagai berikut:
Pilihan akan dikirim ke
stderr
. Berikut ini skrip sampel menggunakan 3 warna.Di Debian, Anda dapat menginstal
dialog
melalui paket dengan nama yang sama .sumber
Berikut ini adalah
bash
solusi skrip murni dalam bentukselect_option
fungsi, hanya mengandalkan urutan pelarian ANSI dan built-inread
.Bekerja pada Bash 4.2.45 di OSX. Bagian funky yang mungkin tidak berfungsi sama baiknya di semua lingkungan dari yang saya tahu adalah
get_cursor_row()
,key_input()
(untuk mendeteksi tombol naik / turun) dancursor_to()
fungsinya.Berikut adalah contoh penggunaannya:
Output terlihat seperti di bawah ini, dengan opsi yang dipilih saat ini disorot menggunakan pewarnaan ansi terbalik (sulit untuk disampaikan di sini dalam penurunan harga). Ini dapat diadaptasi dalam
print_selected()
fungsi jika diinginkan.Pembaruan: Ini sedikit ekstensi
select_opt
membungkusselect_option
fungsi di atas untuk membuatnya mudah digunakan dalamcase
pernyataan:Contoh penggunaan dengan 3 opsi literal:
Anda juga dapat mencampur jika ada beberapa entri yang diketahui (Ya dan Tidak dalam kasus ini), dan memanfaatkan kode keluar
$?
untuk kasus wildcard:sumber