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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL > > PROTECTED]<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 <[EMAIL PROTECTED]<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]