#!/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
Adicione as instruções break
sempre que precisar que o loop select
saia. Se um break
não for executado, a instrução select
entrará em loop e o menu será exibido novamente.
Na terceira opção, incluí as variáveis que são definidas pela instrução select
para demonstrar que você tem acesso a esses valores. Se você escolher, a saída será:
you chose choice 3 which is Option 3
Você pode ver que $REPLY
contém a string digitada no prompt. É usado como um índice na matriz ${options[@]}
como se a matriz fosse baseada em 1. A variável $opt
contém a string desse índice na matriz.
Observe que as opções podem ser uma lista simples diretamente na instrução select
, como esta:
select opt in foo bar baz 'multi word choice'
mas você não pode colocar essa lista em uma variável escalar por causa dos espaços em uma das opções.
Você também pode usar globalização de arquivos se estiver escolhendo entre arquivos:
select file in *.tar.gz