[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Menu em script
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Menu em script |
Date: |
Thu, 6 Oct 2005 15:44:03 -0300 |
Opa
Fiz uma subfunção a muuuuito tempo atras chamada super_menu
Como funciona ? Simples:
super_menu -m "mensagem opcoes" \
-p "prompt" \
-n "mensagem opcao invalida" \
-o option1 "comands" \
-o option2 "comands" \
-o option3 "comands" \
-o option4 "comands" \
-o option5 "comands"
para o prompt e a mensagem de opção invalida existem mensagens default.
eu não estou validando se foram colocados os argumentos corretos
(estou assumido que quem usa a função toma cuidado com isto). E se vcs
repetirem uma opção isto só sera adicionado, não sobreescrito.
Se alguem quiser turbinar esta classe, fique a vontade.
por exemplo:
opcao_0(){
echo "sair"
sair=true
}
opcao_1(){
echo "editar"
}
opcao_2(){
echo "deletar"
}
opcao_3(){
echo "consultar"
}
clear
local sair
sair=false
while [ "$sair" != "true" ]
do super_menu -m "0) Sair \n1) Editar \n2) Deletar \n3) Consultar\n" \
-o 0 opcao_0 \
-o 1 opcao_1 \
-o 2 opcao_2 \
-o 3 opcao_3
done
ps: se vc trabalhar com submenus vai entender que o 'local sair' é
muito importante.
Eis o código:
super_menu(){
local i
local opt
local cmd
local option
local max
local found
local MSG
local NOKMSG
local PROMPT
i=0
PROMPT="option> "
NOKMSG="Opcao errada"
while [ $1 ]
do
case $1 in
-m) shift; MSG="$1"; shift ;;
-p) shift; PROMPT="$1" ;shift ;;
-n) shift; NOKMSG="$1" ;shift ;;
-o) shift; opt[$i]="$1"; shift; cmd[$i]="$1"; i=$((i+1)); shift;;
esac
done
echo -e $MSG
read -p $PROMPT option
max=$i
i=0
found=false
while [ $i -lt $max ]
do [ "${opt[$i]}" = "$option" ] && { found=true; eval "${cmd[$i]}";}
i=$((i+1))
done
[ "$found" != "true" ] && echo $NOKMSG
}
Em 05/10/05, Fabiano Caixeta Duarte<address@hidden> escreveu:
> Marcos Notari Junior escreveu:
> > E se alguém tiver uma solução melhor q esta, agradeceria.
>
> Sugiro que vc use o dialog
> (http://aurelio.net/shell/dialog/) para
> montar o menu. Funciona via terminal ssh.
>
> Dá uma olhadinha em trap (help trap) também. Vai ajudar.
>
> Qq coisa, se depois de reimplementado com isto ainda precisar de uma
> ajuda, é só falar :)
>
> Fabiano Caixeta Duarte
> Consultor em soluções para Redes de Computadores
> Ribeirão Preto - SP
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>
>
>
>
> Yahoo! Grupos, um serviço oferecido por:
>
> PlayStation 2 a partir de R$ 659! Parcele!Celular Motorola com câmera a
> partir de R$ 449!
> Siemens SL65 com câmera a partir de R$ 730! Câmeras Digitais a partir de
> apenas R$ 399! Parcele!
> CD Players Pioneer a partir de R$ 369!MP3 Player iPod a partir de R$ 799!
> Parcele!
> ________________________________
> Links do Yahoo! Grupos
>
>
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/shell-script/
>
> Para sair deste grupo, envie um e-mail para:
> address@hidden
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.
- Menu em script, Marcos Notari Junior, 2005/10/05
- Re: [shell-script] Menu em script, Fabiano Caixeta Duarte, 2005/10/05
- Re: [shell-script] Menu em script,
Tiago Barcellos Peczenyj <=
- Re: [shell-script] Menu em script, marcio moreira, 2005/10/05
- Re: [shell-script] Menu em script, Tiago Barcellos Peczenyj, 2005/10/05
- Re: Menu em script, Leogildo, 2005/10/05
- Re: [shell-script] Menu em script, moysespr, 2005/10/05
- RE: [shell-script] Menu em script, Reinaldo Marques de Lima, 2005/10/06