Cara Membuat Menu Pilihan Menggunakan Pernyataan Pilih di Bash Shell

Cara Membuat Menu Pilihan Menggunakan Pernyataan Pilih di Bash Shell

Kami semua sangat sering menggunakan skrip bash untuk mengotomatisasi tugas yang membosankan dan berulang. Terkadang dalam skrip kami, kami perlu bertanya
Pengguna untuk melakukan satu atau lebih pilihan secara interaktif: Dalam tutorial ini kita akan melihat cara menggunakan pernyataan Bash Shell Select untuk melakukan operasi seperti itu dalam beberapa baris kode.

Dalam tutorial ini Anda akan belajar:

  • Cara menggunakan pernyataan bash select
  • Cara menyesuaikan prompt menu pilih
Cara Membuat Menu Pilihan Menggunakan Pernyataan Pilih di Bash Shell

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi-independen
Perangkat lunak Shell bash
Lainnya Tidak ada persyaratan khusus
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Pernyataan Pilih

Scripting adalah salah satu keterampilan paling umum yang harus dimiliki seorang administrator sistem, untuk mengotomatiskan berulang
tugas dan buat mereka kurang rentan terhadap kesalahan. Dalam kasus yang tidak terlalu rumit, shell adalah alat yang sempurna untuk digunakan untuk pekerjaan itu. Bash, the Bourne Again Shell, adalah shell yang paling banyak digunakan di dunia GNU/Linux. Shell ini memberikan yang sangat berguna Pilih penyataan. Tujuannya dijelaskan dengan cara berikut:

Pilih kata -kata dari daftar dan jalankan perintah



Deskripsinya cukup jelas. Pernyataan tersebut memungkinkan kami untuk secara interaktif menerima input dari pengguna, menghasilkan daftar pilihan bernomor dan mendorongnya untuk memilih satu. Mari kita lihat bagaimana itu digunakan:

Pilih Nama [dalam Words…;] lakukan perintah; Selesai

Sintaksnya sangat mirip dengan yang tradisional untuk loop dalam bash, kecuali untuk penggunaan Pilih kata kunci. Pernyataan pilih, bagaimanapun, berfungsi dengan cara yang berbeda. Mari kita lihat contohnya. Misalkan kami ingin meminta pengguna untuk memilih salah satu file yang terkandung dalam direktori. Inilah yang bisa kami tulis:

$ file = "$ (ls -a .) "$ SELECT fileName di $ file; do echo" $ file "; selesai 1) file1 2) file2 3) file3 #?

Mari kita jelaskan apa yang telah kita lakukan. Pertama -tama kami memperoleh daftar semua file yang ada di direktori (dalam hal ini direktori kerja saat ini) menggunakan ls perintah dan menentukan -A opsi (pendek untuk --hampir semua), untuk mengecualikan yang tersirat . Dan .. dari daftar yang dikembalikan, yang kami tetapkan ke file variabel.

Kami kemudian mulai menggunakan Pilih penyataan. Di atas adalah contoh yang sangat mendasar: kami memberikan hasil dari perluasan mengajukan variabel sebagai daftar pilihan yang akan dimasukkan. Perhatikan bahwa kami menghindari mengutip ekspansi $ file dengan sengaja Kata pemisahan: Saat ekspansi dikutip dengan kutipan ganda Kata pemisahan ditekan, jadi ruang tidak digunakan sebagai pembatas kata dan hasil ekspansi dianggap sebagai keseluruhan. Ini bukan yang kami inginkan dalam hal ini: kami membutuhkan setiap kata untuk digunakan sebagai pilihan di menu yang dihasilkan.



Kata -kata yang diperoleh dari perluasan variabel dicetak pada Stderr (Kesalahan standar). Masing -masing didahului dan dikaitkan dengan angka, yang merupakan apa yang akan digunakan pengguna untuk merujuknya. Setelah semua elemen ditampilkan, pengguna diminta untuk memasukkan pilihannya. Apa yang ditampilkan adalah PS3 prompt, yang, secara default diatur ke #?.

Apa yang terjadi saat pengguna melakukan pilihan? Mari kita lihat:

$ file = "$ (ls -a .) "$ SELECT fileName di $ file; do echo" Anda memilih $ fileName "; selesai 1) file1 2) file2 3) file3 #? 1 Anda memilih file1 #?

Pilihan yang kami masukkan, 1, dibaca dari Stdin (Input standar) dan jika nomor yang dimasukkan termasuk di antara yang tersedia, kata yang sesuai ("file1" dalam contoh) ditetapkan ke,nama file variabel. Dalam contoh kami, kami menentukan echo "$ fileName" Sebagai perintah yang akan dieksekusi setelah pilihan dilakukan: sebagai hasilnya: kata yang dipilih dicetak di layar. Nomor yang kami masukkan untuk menentukan pilihan kami juga disimpan dalam variabel: MEMBALAS.

Anda mungkin melihat hal aneh terjadi pada contoh di atas: Setelah kami melakukan pilihan kami, setelah eksekusi perintah, kami diminta lagi untuk suatu pilihan, mengapa? Ini terjadi karena kami tidak memberikan a merusak
memerintah. Kami dapat dengan mudah memperbaikinya:

$ file = "$ (ls -a .) "$ SELECT fileName di $ file; do echo" Anda memilih $ fileName "; break; selesai 1) file1 2) file2 3) file3 #? 1 Anda memilih file1

Bagaimana jika kami tidak memberikan pilihan apa pun? Prompt hanya diulangi sampai kita melakukannya:

Pilih nama file di $ file; do echo "Anda memilih $ fileName"; merusak; Selesai 1) File1 2) File2 3) File3 #? 1) File1 2) File2 3) File3 #? 

Bagaimana jika kita memasukkan nomor yang tidak ada dalam daftar? Dalam hal ini variabel yang kami gunakan, nama file dalam kasus kami, diatur ke batal.

Mengubah prompt seleksi

Seperti yang sudah kita lihat, prompt yang digunakan oleh shell dalam konteks pernyataan pilih adalah PS3 prompt, yang secara default, memiliki #? String memiliki nilai. Ini tidak terlalu ramah pengguna, jadi kami mungkin ingin mengubahnya dan menggunakan sesuatu yang lebih deskriptif sebagai gantinya. Bagaimana kita bisa melakukannya? Sangat sederhana: kita harus mengubah nilai PS3 parameter:

$ Ps3 = "Harap masukkan pilihan Anda:"


Lain kali kita akan menggunakan Pilih pernyataan, kami akan melihat perubahannya:

Pilih nama file di $ file; do echo "Anda memilih $ fileName $ balasan"; merusak; Selesai 1) File1 2) File2 3) File3 Masukkan pilihan Anda: 

Perubahan yang dilakukan ke variabel hanya akan efektif untuk bagian shell saat ini, dan, jika kita ekspor Variabel, juga pada semua anaknya:

$ Ekspor PS3 = "Harap masukkan pilihan Anda:"

Perubahan, bagaimanapun, tetap sementara sampai kami mengatur PS3 variabel di dalam .Bashrc mengajukan. PS3 hanyalah salah satu prompt yang digunakan dalam bash: periksa artikel Bash Prompt kami jika Anda ingin tahu lebih banyak tentang subjek.

Kesimpulan

Dalam tutorial ini kami belajar cara menggunakan pesta Pilih penyataan. Kami melihat cara kerjanya, dan bagaimana kami dapat menggunakannya untuk membuat menu pilihan untuk secara interaktif meminta pengguna untuk melakukan pilihan. Akhirnya kami melihat cara menyesuaikan prompt yang ditampilkan di menu pilihan dengan memodifikasi shell PS3 parameter.

Tutorial Linux Terkait:

  • Menguasai loop skrip bash
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Loop bersarang dalam skrip bash
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Menangani input pengguna dalam skrip bash
  • Tutorial debugging GDB untuk pemula
  • Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
  • Cara Mengatur Server OpenVPN di Ubuntu 20.04