Cara Membuat Menu Pilihan Menggunakan Pernyataan Pilih di Bash Shell
- 3930
- 727
- John Ratke
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
Persyaratan dan konvensi perangkat lunak yang digunakan
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