[Dúvida] Menu em shell script

Sim, usando a comparação em linha do bash e usando o operador && ( comando após esses dois caracteres só será executado se o código de saída do anterior for 0), o certo é padronizar ou seja, usar ou letras ou números, no caso vou assumir que as opções A, B e C serão os números 4, 5 e 6respectivamente pra facilita, a função menu ficaria assim:

clear
echo " Opções:"
echo " 1."
echo " 2."
echo " 3."
echo " 4."
echo " 5."
echo " 6."
echo
echo -n "Esolha uma opção: "

read -n1 -s OPTION
# -n1 faz com que o usuário só possa digitar um caractere por vez
# -s faz com que o read não mostre o que o usuário digitou

[[ "$OPTION" =~ ^[0-9]+$ ]] || OPTION=0
# Verifica se OPTION começa (^) e termina ($) 
# com um numero entre 0 e 9 ([0-9]+)
# Se não (||) OPTION receberá 0 como valor

[ "$OPTION" -ge 1 -a "$OPTION" -le 6 ] || OPTION=0
# Verifica se  OPTION é maior ou igual (-ge) a 1
# e\ou (-a) menor ou igual a (-le) 6 
# (6 é a quantidade de opções) 
# Se não (||) OPTION receberá 0 como valor

[ "$OPTION" = "1" ] && echo "Você escolheu a opção 1" 
[ "$OPTION" = "2" ] && echo "Você escolheu a opção 2" 
[ "$OPTION" = "3" ] && echo "Você escolheu a opção 3"
[ "$OPTION" = "4" ] && echo "Você escolheu a opção 4"
[ "$OPTION" = "5" ] && echo "Você escolheu a opção 5"
[ "$OPTION" = "6" ] && echo "Você escolheu a opção 6"
[ "$OPTION" = "0" ] && echo "Opção inválida"
# Aqui  ocorre o contrario:
# Se OPTION for igual (=) a um número das opções 
# então (&&) execute a ação...
# o que faz o tratamento se a opção for invávalida
# é quando ela for igual a 0

Note que se vocẽ souber como && e || funcionam fica bem mais légivel

1 curtida