#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
Tambahkan break
pernyataan di mana pun Anda membutuhkan select
loop untuk keluar. Jika a break
tidak dilakukan, select
statemen akan berulang dan menu ditampilkan kembali.
Dalam opsi ketiga, saya menyertakan variabel yang ditetapkan oleh select
pernyataan untuk menunjukkan bahwa Anda memiliki akses ke nilai-nilai itu. Jika Anda memilihnya, itu akan menampilkan:
you chose choice 3 which is Option 3
Anda bisa melihat yang $REPLY
berisi string yang Anda masukkan saat diminta. Ini digunakan sebagai indeks ke dalam array ${options[@]}
seolah-olah array berdasarkan 1. Variabel $opt
berisi string dari indeks itu dalam array.
Perhatikan bahwa pilihannya bisa berupa daftar sederhana langsung dalam select
pernyataan seperti ini:
select opt in foo bar baz 'multi word choice'
tetapi Anda tidak dapat menempatkan daftar seperti itu dalam variabel skalar karena spasi di salah satu pilihan.
Anda juga dapat menggunakan penggumpalan file jika Anda memilih di antara file-file:
select file in *.tar.gz
seq 10 | fzf
. Kekurangannya adalah bahwa fzf tidak diinstal secara default. Anda dapat menemukan fzf di sini: github.com/junegunn/fzf