#!/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
Çıkmak break
için select
döngünün gerektiği yere ifadeleri ekleyin . A break
gerçekleştirilmezse, select
ifade döngüler ve menü yeniden görüntülenir.
Üçüncü seçenekte, select
bu değerlere erişiminiz olduğunu göstermek için ifade tarafından ayarlanan değişkenleri dahil ettim . Seçerseniz, çıktı olacaktır:
you chose choice 3 which is Option 3
Bilgi $REPLY
isteminde girdiğiniz dizgiyi içerdiğini görebilirsiniz . ${options[@]}
Dizi 1 tabanlıymış gibi dizinin içine bir dizin olarak kullanılır . Değişken $opt
, dizideki o dizinden gelen dizeyi içerir.
Seçimlerin şöyle bir select
ifadede doğrudan basit bir liste olabileceğini unutmayın :
select opt in foo bar baz 'multi word choice'
ancak, seçimlerden birindeki boşluklar nedeniyle böyle bir listeyi skalar değişkeni içine koyamazsınız.
Dosyalar arasında seçim yapıyorsanız globbing dosyasını da kullanabilirsiniz:
select file in *.tar.gz
seq 10 | fzf
. Dezavantajı, fzf'nin varsayılan olarak yüklenmemiş olmasıdır. Fzf'yi burada bulabilirsiniz: github.com/junegunn/fzf