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

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

Re: Programa de configuração em Shell Script


From: mop
Subject: Re: Programa de configuração em Shell Script
Date: Thu, 28 Feb 2008 01:22:20 -0300

O trecho com ${#REPLY} está correto. Isso retorna o tamanho da string em
bytes.

Fazendo um exemplo na linha de comando:
PS1='prompt$ '
prompt$ x=asdfg
prompt$ echo ${#x}
5
prompt$


Acabei de pegar a função daqui via browser:
http://br.groups.yahoo.com/group/shell-script/message/25485?l=1

Colei na linha de comando e aconteceu isto ao pressionar seta acima, seta
abaixo e enter:

prompt$ key(){
> TIMEOUT='-t30'
> UP=$'\x1b\x5b\x41'
> DOWN=$'\x1b\x5b\x42'
> 
> KEY=;STRING=
> while [ ! $KEY ]&&read -s -r -n1 $TIMEOUT;do
> [ ${#REPLY} -eq 0 ]&&KEY=ENTER
> STRING="$STRING$REPLY"
> [ "${STRING}" != "${STRING/$UP/}" ]&&KEY=UP
> [ "${STRING}" != "${STRING/$DOWN/}" ]&&KEY=DOWN
> done
> echo "$KEY"
> }
prompt$ 
prompt$ while :;do case `key` in
> UP)echo 1
> ;;DOWN)echo 2
> ;;ENTER)date;break
> esac;done
1
2
Thu Feb 28 01:05:54 hrN 2008
prompt$

Exatamente como previsto.






Esta informação não deve ser importante, mas coletei também a versão do
meu shell;

prompt$ $0 --version
GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
prompt$ 







Veja parte da saída do comando set onde aparece a função carregada:

prompt$ set|tail -n 20
XTERM_SHELL=/bin/bash
XTERM_VERSION='X.Org 6.8.99.903(227)'
_=set
file=/etc/ETC/profile.d/t1lib.sh
x=asdfg
key () 
{ 
    TIME';T='-t30';
    DOWN='';
    KEY=;
    STRING=;
    while [ ! $KEY ] && read -s -r -n1 $TIMEOUT; do
        [ ${#REPLY} -eq 0 ] && KEY=ENTER;
        STRING="$STRING$REPLY";
        [ "${STRING}" != "${STRING/$UP/}" ] && KEY=UP;
        [ "${STRING}" != "${STRING/$DOWN/}" ] && KEY=DOWN;
    done;
    echo "$KEY"
}
prompt$







Digitando na linha de comando e pressionando as 3 teclas:

prompt$ key
UP
prompt$ key
DOWN
prompt$ key
ENTER
prompt$





Não tenho idéia qual seja o problema.


------------------------------------------------------------------
>Esta linea é correta? "[ ${#REPLY} -eq 0 ]&&KEY=ENTER", ou lhe sobra 
>isto "#"



reply via email to

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