--- Em [email protected], "Flavio Junior" <[EMAIL PROTECTED]>
escreveu
>
> A dica não é minha, a algum tempo atras alguem respondeu essa mesma
duvida
> aqui na lista
> 
> a ideia é a seguinte:
> -bash-3.1$ read -n1 -s VAR
> <ESC>
> -bash-3.1$ if [ "^[$" == "$(cat -vet <<< $VAR)" ]; then echo APERTOU
ESC;
> else echo BALH BALH BLAH; fi
> APERTOU ESC
> -bash-3.1$
> 
> Pra ficar mais claro, quando voce atribui o valor de <ESC> (apertar
a tecla
> ESC) a uma variavel, o caracter q ela pega é ^[$, com o cat -vet a gente
> consegue ver isso e comparar com o literal ^[$ q escrevemos, se
forem iguais
> então ele apertou esc.
> 
> Agora pro teu problema é só fazer um entra lido sai lido que resolve.
> 
> Sorte,
> 
> 
> Flavio do Carmo Junior
> 
> 
> On 5/14/07, xiss_break <[EMAIL PROTECTED]> wrote:
> >
> >   Olá pessoal,
> >
> > Estou tentando fazer um programa em shell, sendo este o meu primeiro
> > programa. Esta funcionando de forma perfeita, mas algumas
> > funcionalidades estão me tirando do serio, a principal delas é a
seguinte:
> >
> > Tem uma tela que o usuario tem de informar um numero de codigo, mas
> > gostaria que quando o usuario em uma possivel desistência, pudesse
> > usar o ESC para retornar a tela anterior.
> >
> > Isso é possivel?
> >
> > Grato a todos!
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Olá Flavio..

Agradeço imensamente sua resposta.
Coloquei de um geito muito tosco no script apenas para testar se
funcionava de fato. Mas agora não estou conseguindo inserir este
controle no contexto do script ja existente. Veja abaixo o que tenho.

echo -n "Informe o IP do cliente: "
   read -n1 -s VAR ip
   if [ "^[$" == "$(cat -vet <<< $VAR)" ]
   then
   Avisar
   fi
   case $ip in
   [a-z] | [A-Z] ) echo "Formato ip Invalido!"; sleep 1; DelAviso
            ;;

   [0-9]*\.[0-9]*\.[0-9]*\.[0-9][0-9][0-9] )
   x=1
   while [ "$x" -le 4 ];
   do
   Q1=`echo "${ip}" | cut -f"${x}" -d.`;
   if [ "$Q1" -gt 255 ];
   then
   echo "O valor $Q1 não é válido!";
   sleep 1
   DelAviso
   fi;
   x=$((x+1));
   done;
           ;;

   * )         echo "Formato ip invalido!"; sleep 1; DelAviso
esac

   ARQ=/usr/local/squid/etc/aviso.txt
   if [ ! -f "$ARQ" ]
   then
   touch /usr/local/squid/etc/aviso.txt
   else
   if [ ! -w "$ARQ" ]
   then
   echo "Arquivo sem Permissão para gravar!"
   else
   sed -e '$a\' -e "${ip}" "${ARQ}" > /tmp/arq
   mv /tmp/arq "${ARQ}"
   fi
   sleep 1
   Avisar
   fi
}

Veja que inserir sua sugestao na interacao do read, mas assim ele fica
com alguns bugs...preciso encontrar um geito de inseri-lo nessa
intreção com o restante do script.

Agradeço a todos que ajudarem.


Responder a