Skip to content

fc-shell-scripting/Aula10-For-select

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Select


Esta aula é um complemento para a aula 10 (For) Fazendo os exercícios das aulas anteriores, você deve ter notado que montar um menu para o usuário escolher um valor não é uma tarefa muito simples.

Exemplo básico

Para resolver este problema de uma forma simples, podemos usar o laço de repetição select. Este laço permite que o usuário escolha valores para selecionar elementos de uma lista de variáveis. Veja o exemplo abaixo:

frutas="maca banana morango mamao melao uva abacaxi tamarindo pera"
select fruta in $frutas; do
    echo "Fruta escolhida: $fruta"
done

Se você executar o exemplo acima, verá que o que é solicitado ao usuário após a listagens dos dados é:

1) maca	      3) morango    5) melao	  7) abacaxi	9) pera
2) banana     4) mamao	    6) uva	  8) tamarindo
#?

perceba que este laço de repetiçõ é infinito. Toda vez que um elemento for escolhido, a pergunta folta a ser feita ao usuário.

Adicionando condição de saída

Para resolver o problema do exemplo básico (acima), adicione a opção de saída na lista, e implemente a condição de saída dentro do loop:

frutas="maca banana morango mamao melao uva abacaxi tamarindo pera sair"
select fruta in $frutas; do
    if [[ $fruta == "sair"]]; then
        break
    fi
    echo "Fruta escolhida: $fruta"
done

Dessa forma, quando o usuário escolher a opção "sair", o comando break fará a saída do loop select.

Personalizando a pergunta ao usuário

A pergunta feita ao usuário não é muito intuitiva:

#?

A melhor forma de alterar a pergunta feita ao usuário é alterando a variável que o interpretador usa para armazenar a pergunta. No bash, esta variável é PS3. Você pode alterá-la dentro do script, antes de usar o comando select:

PS3="Escolha uma fruta:"
frutas="maca banana morango mamao melao uva abacaxi tamarindo pera sair"
select fruta in $frutas; do
    if [[ $fruta == "sair"]]; then
        break
    fi
    echo "Fruta escolhida: $fruta"
done

O resultado será:

1) maca	        3) morango     5) melao	      7) abacaxi     9) pera
2) banana       4) mamao       6) uva	      8) tamarindo  10) sair
Escolha uma fruta:

About

Conteúdo adicional para aula sobre laços for

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published