select

Este comando serve para fazer menus, onde o usuário pode escolher uma dentre várias opções.

Sua sintaxe é um pouco parecida com a do for:

select opcao in lista-de-opcoes

A diferença é que o for faz um loop para cada palavra que estiver na lista-de-opcoes enquanto o select espera que o usuário escolha uma opção dentre as que estão na lista.

Veja este exemplo:

#!/bin/bash
# conta.sh

function Mecho {
        echo -e "\e[1m$*\e[m"
}

# ATENÇÃO AQUI: o prompt que o select mostra é controlado pela
#               variável PS3. E todas aqueles comentários sobre
#               o PS1 feitas no tópico 2.2. valem aqui também.
PS3="Opção: "

echo -n "Entre com o primeiro número: "
read NUM1
echo -n "Entre com o segundo número: "
read NUM2

OPCOES="adicao subtracao multiplicacao divisao sair"

select opc in $OPCOES; do
    if [ "$opc" = adicao ]; then
	Mecho "$NUM1 + $NUM2 = $[ $NUM1 + $NUM2 ]"
    elif [ "$opc" = subtracao ]; then
	Mecho "$NUM1 - $NUM2 = $[ $NUM1 - $NUM2 ]"
    elif [ "$opc" = multiplicacao ]; then
	Mecho "$NUM1 * $NUM2 = $[ $NUM1 * $NUM2 ]"
    elif [ "$opc" = divisao ]; then
	Mecho "$NUM1 / $NUM2 = `echo "scale=2;$NUM1/$NUM2" | bc -l`"
    elif [ "$opc" = sair ]; then
	Mecho "Tchau! "
	exit
    else
	Mecho "Opção inválida! "
    fi
done

Bem prático, não acha? ;-)

results matching ""

    No results matching ""