GNU/Linux >> Belajar Linux >  >> Linux

Pilih Bash (Buat Menu)

Dalam tutorial ini, kita akan membahas dasar-dasar select membangun di Bash.

select konstruksi memungkinkan Anda membuat menu.

Bash select Bangun #

select konstruksi menghasilkan menu dari daftar item. Sintaksnya hampir sama dengan for lingkaran:

select ITEM in [LIST]
do
  [COMMANDS]
done

[LIST] dapat berupa rangkaian string yang dipisahkan oleh spasi, rentang angka, keluaran dari suatu perintah, larik, dan sebagainya. Permintaan khusus untuk select konstruksi dapat diatur menggunakan PS3 variabel lingkungan.

Ketika select konstruksi dipanggil, setiap item dari daftar dicetak di layar (kesalahan standar), didahului dengan angka.

Jika pengguna memasukkan nomor yang sesuai dengan nomor salah satu item yang ditampilkan, maka nilai [ITEM] diatur ke item itu. Nilai item yang dipilih disimpan dalam variabel REPLY . Jika tidak, jika input pengguna kosong, prompt dan daftar menu akan ditampilkan lagi.

select loop akan terus berjalan dan meminta input pengguna hingga break perintah dijalankan.

Untuk mendemonstrasikan cara select pekerjaan konstruksi, mari kita lihat contoh sederhana berikut:

PS3="Enter a number: "

select character in Sheldon Leonard Penny Howard Raj
do
    echo "Selected character: $character"
    echo "Selected number: $REPLY"
done

Script akan menampilkan menu yang terdiri dari item daftar dengan nomor yang menyertainya dan PS3 mengingatkan. Ketika pengguna memasukkan nomor, skrip akan mencetak karakter dan nomor yang dipilih:

1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
Enter a number: 3
Selected character: Penny
Selected number: 3
Enter a number:

Bash select Contoh #

Biasanya, select digunakan dalam kombinasi dengan case dari if pernyataan.

Mari kita lihat contoh yang lebih praktis. Ini adalah kalkulator sederhana yang meminta pengguna untuk memasukkan dan melakukan operasi aritmatika dasar seperti penambahan, pengurangan, perkalian, dan pembagian.

PS3="Select the operation: "

select opt in add subtract multiply divide quit; do

  case $opt in
    add)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 + $n2 = $(($n1+$n2))"
      ;;
    subtract)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 - $n2 = $(($n1-$n2))"
      ;;
    multiply)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 * $n2 = $(($n1*$n2))"
      ;;
    divide)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 / $n2 = $(($n1/$n2))"
      ;;
    quit)
      break
      ;;
    *) 
      echo "Invalid option $REPLY"
      ;;
  esac
done

Ketika skrip dijalankan, itu akan menampilkan menu dan PS3 mengingatkan. Pengguna diminta untuk memilih operasi dan kemudian memasukkan dua angka. Bergantung pada input pengguna, skrip akan mencetak hasilnya. Pengguna akan diminta untuk melakukan operasi baru setelah setiap pemilihan hingga break perintah dijalankan.

1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 1
Enter the first number: 4
Enter the second number: 5
4 + 5 = 9
Select the operation: 2
Enter the first number: 4
Enter the second number: 5
4 - 5 = -1
Select the operation: 9
Invalid option 9
Select the operation: 5

Salah satu kelemahan skrip ini adalah hanya dapat bekerja dengan bilangan bulat.

Ini adalah versi yang sedikit lebih maju. Kami menggunakan bc alat yang mendukung angka mengambang untuk melakukan perhitungan matematis. Juga, kode berulang dikelompokkan di dalam suatu fungsi.

calculate () {
  read -p "Enter the first number: " n1
  read -p "Enter the second number: " n2
  echo "$n1 $1 $n2 = " $(bc -l <<< "$n1$1$n2")
}

PS3="Select the operation: "

select opt in add subtract multiply divide quit; do

  case $opt in
    add)
      calculate "+";;
    subtract)
      calculate "-";;
    multiply)
      calculate "*";;
    divide)
      calculate "/";;
    quit)
      break;;
    *) 
      echo "Invalid option $REPLY";;
  esac
done
1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 4
Enter the first number: 8
Enter the second number: 9
8 / 9 =  .88888888888888888888
Select the operation: 5   

Kesimpulan #

select konstruksi memungkinkan Anda untuk dengan mudah menghasilkan menu. Ini sangat berguna saat menulis skrip shell yang membutuhkan input pengguna.

Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.


Linux
  1. Apakah Mungkin Membuat Dan Menggunakan Menu Di Vim (berbasis terminal)?

  2. Bagaimana Cara Membaca String Sebagai Angka Hex Di Bash?

  3. Bagaimana cara memilih nomor port statis untuk aplikasi khusus?

  1. Jadikan riwayat Bash lebih bermanfaat dengan kiat-kiat ini

  2. Bash:Tombol Shift+panah Buat A,b,c,d?

  3. Bagaimana cara membuat GREP hanya memilih nilai numerik?

  1. Bash:Penggunaan Prosedural Find Into Select yang aman-spasi?

  2. Tingkatkan Nomor Bangun Di Bash?

  3. Bagaimana cara menguji apakah suatu variabel adalah angka di Bash?