shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Programa de configuração em Shell Script


From: Thiago Braga Santana
Subject: Re: [shell-script] Programa de configuração em Shell Script
Date: Tue, 26 Feb 2008 14:41:54 -0300

Mesmo sem entender muito, adaptei a ideia do Julio no meu script e o
resultado foi esse abaixo:

#!/bin/bash
#Programa que prepara a tela de menu

TelaPrincipal ()
{
tput setab 4
tput setaf 7
clear
Colunas=`tput cols`
Linhas=`tput lines`
Titulo=Instalador\ de\ Arquivos\ Compactados
T=`echo ${#Titulo}`
Coluna=$(((Colunas - T) / 2))
tput cup 0 $Coluna
tput bold
#tput smul
echo -e "$Titulo"
tput cup 1 $Coluna
echo -e "-------------------------------------"
MenuColuna=$(((Colunas / 2) / 2))
MenuLinha=$(((Linhas / 2) / 2))
tput sgr0
tput setab 7
tput setaf 0
tput cup $MenuLinha $MenuColuna
echo "                                              "
MenuLinha=$((MenuLinha+1))
tput cup $MenuLinha $MenuColuna
echo "                                              "
MenuColuna=$((MenuColuna+2))
tput cup $MenuLinha $MenuColuna
PriMenuColuna=$MenuColuna
PriMenuLinha=$MenuLinha
echo "Primeira opção (Primeira opção)"
MenuColuna=$((MenuColuna-2))
MenuLinha=$((MenuLinha+1))
tput cup $MenuLinha $MenuColuna
echo "                                              "
MenuColuna=$((MenuColuna+2))
tput cup $MenuLinha $MenuColuna
echo "Segunda opção (Primeira opção)"
SecMenuColuna=$MenuColuna
SecMenuLinha=$MenuLinha
MenuColuna=$((MenuColuna-2))
MenuLinha=$((MenuLinha+1))
tput cup $MenuLinha $MenuColuna
echo "                                              "
tput sgr0
tput cup $PriMenuLinha $PriMenuColuna
}
TelaPrincipal
while read -sn1 a
do
TelaPrincipal
y=
x=$(echo "$a" | cat -vet)
[[ "$x" == "^[$"* ]] && read -n2 y
case $y in
[A) tput cup $PriMenuLinha $PriMenuColuna
tput setab 4
tput setaf 7
echo "Primeira opção (Primeira opção)"
tput sgr0;;
[B) tput cup $SecMenuLinha $SecMenuColuna
tput setab 4
tput setaf 7
echo "Segunda opção (Primeira opção)"
tput sgr0;;
[C) break;;
[D) break;;
esac
done
echo -e "\n"
clear

Se alguém quiser dar alguma sugestão de como otimizar ele, será muito bem
vindo. Ainda falta a opção da tecla Enter que ainda não entendi como
colocar, mais de resto é exatamente o que eu queria fazer.

Muito obrigado Julio e muito obrigado a todos pela atenção e paciência.


Thiago Santana
PS.: Só posso concluir que realmente é possível fazer qualquer coisa com
Shell Script!

Em 26/02/08, Thiago Braga Santana <address@hidden> escreveu:
>
> Mais uma vez, muito obrigado a todos e uma agradecimento especial ao Mop e
> ao Julio pelas valiosas informações, o seu exemplo Julio é o que está mais
> próximo do que preciso, mais perdoe minha ignorância, não consegui
> compreender o momento no qual é feita a detecção da tecla que foi
> pressionada/digitada, quando é feita a verificação de ser ou não uma das
> teclas que estão sendo esperadas e também não consegui entender como foi
> feita a restrição as teclas restantes do teclado.
>
> Desculpe a ignorância, ainda sou iniciante na linguagem Shell.
>
>
> Muito obrigado a todos.
>
> Thiago Santana
>
> Em 26/02/08, Julio C. Neves <address@hidden> escreveu:
> >
> >   Fala Thiago,
> > faça um loop com read -sn1 e verifique se o valor que foi digitado
> > pertence
> > ao conjunto que vc deseja. É chato mas da pra fazer. Veja um pequeno
> > exemplo
> > de como proceder:
> >
> > while read -sn1 a
> > do
> > y=
> > x=$(echo "$a" | cat -vet)
> > [[ "$x" == "^[$"* ]] && read -n2 y
> > case $y in
> > [A) echo cima;;
> > [B) echo baixo;;
> > [C) echo direita;;
> > [D) echo esquerda;;
> > esac
> > done
> >
> > Este loopizinho só aceita as setas e ignora qq outra tecla.
> >
> > Abraços,
> > Julio
> >
> > Em 26/02/08, Thiago Braga Santana 
> > <address@hidden<thiago.braga.santana%40gmail.com>>
> > escreveu:
> >
> > >
> > > Agradeço a todos pelas respostas rapidas e produtivas, com relação ao
> > > dialog, consultei o CentOS, Red Hat EL5 e Fedora 6, nenhuma destas
> > vieram
> > > com o dialog instalado por padrão.
> > >
> > > Utilizando o tput já tenho conseguido o seguinte: Uma tela limpa como
> > > fundo
> > > totalmente azul, um titulo (que no meu caso esta sendo "Instalador de
> > > programas") alinhado ao centro da tela (independente da resolução da
> > > console) e sublinhado, logo abaixo criei um box alinhado ao centro
> > (para
> > > as
> > > cordenadas X e Y) na cor cinza, assim como existe no programa setup da
> > Red
> > > Hat, para abrigar as minhas 3 opções, dentro dele as três opções (uma
> > em
> > > cada linha) com cor de fonte preta.
> > >
> > > Até ai tudo certo, já tenho o layout da pagina e sei posicionar o
> > cursor
> > > em
> > > cada uma das opções, o meu problema é que não tenho a menor ideia de
> > como
> > > restringir o usuário para apenas três teclas: seta pra cima, seta pra
> > > baixo
> > > e Enter. Outro problema é saber quando houve o evento "pressiona
> > tecla",
> > > pois até onde sei o Shell não é orientado a eventos.
> > >
> > > Resumindo, eu preparo todo o layout da página e inicio o programa com
> > o
> > > cursor na primeira opção, em uma variavel eu sei como guardar cada uma
> > das
> > > 3
> > > posições posiveis, o problema é que não tenho a menor ideia de como
> > > programar a "navegação" do programa pelas 3 teclas (sendo o Enter
> > > responsavel apenas por "entrar" na opção selecionada pela posição do
> > > cursor). Já vi alguns menus coloridos feitos em Shell, porém em todos
> > os
> > > que
> > > vi o programa recebe a opção desejada pelo usuário atraves de uma
> > variavel
> > > com valor atribuido atraves do comando "read".
> > >
> > > Alguem pode me dar mais alguma ideia?
> > >
> > > Desde já agradeço a todos pela atenção.
> > >
> > > Thiago Santana
> > >
> > > Em 25/02/08, Ivan lopes <address@hidden<lopesivan.del%40gmail.com>
> > <lopesivan.del%40gmail.com>>
> > > escreveu:
> > > >
> > > > cara, o aurelio.net na apostila dele de shell, ele mostra como fazer
> > > > exatamente isso que vc falou.
> > > > manda um mail pro aurelio pedindo a apostila de shell pdf, se nao me
> > > > engano tah 20 reais.
> > > >
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > --
> > Abraços,
> > Julio
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >  
> >
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]