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

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

Re: [shell-script] Re: Falha no comando read


From: Julio C. Neves
Subject: Re: [shell-script] Re: Falha no comando read
Date: Fri, 23 Mar 2007 18:08:51 -0300

Fala Tchê,
peguei o teu script, dei uma lida e descobri os 2 erros que te reportei. Fiz
as devidas alterações e o script funcionou beleza e de prima. Isso me leva a
2 conclusões:
- Algum problema na configuração do seu Bash (tipo uma variável de sistema
com valor inválido);
- Algum caracter de controle (não printável) contido no arquivo ou no
script. Isso pode ser visto com um cat -vet.

Verifique isso direito, pois reparei que todos que tentaram te ajudar haviam
conseguido executar o "bacalho" ;). Diz aí Tiago - vc andou dando pitaco - o
script não funcionou legal depois das alterações?

Faço ideia da tua saudade de POA, do bar do Beto e etc... ;)
Abração,
Julio
:wq


Em 23/03/07, rodvilla <address@hidden> escreveu:
>
>   Caros Senhores,
>
> Agradeço por oxidarem fosfato na tentativa de me ajudar, mas infelizmente
> o
> problema não está onde apontam.
> # ----
> Flávio, obrigado pela contribuição, mas o comando read no script está se
> comportando de duas formas diferentes.
> Em linhas em sequencia, sem aninhamento, o read funciona como esperado.
> Ele só não funciona quando fica dentro de comandos "if" aninhados. No
> caso,
> a linha em que ele não funciona está num 5. nivel de aninhamento.
> # ----
> Julio, me perdoe, pois no trecho que recortei e enviei havia omitido o
> "}",
> mas ele está lá presente no script.
> Na hipótese que apontas, o interpretador acusaria a falha na primeira
> execução, registrando fim de arquivo inesperado:
> ==> TESTE.bsh: line 284: syntax error: unexpected end of file
> De toda forma fico-lhe muito grato pela manifestação.
> Te passo meu telefone, sim, mas estou há quase um ano morando em Sao
> Paulo!!! - Ah! Que saudades do meu Rio Grande...(rs)
> # ----
> Tiago, agradeço o teu esforço também. Cheguei a deslocar o trecho com o
> "read" pra uma chamada de funcao que executasse somente as linhas com o
> problema, mas não obtive o esperado sucesso.
>
> As questões que não querem calar são:
> - Qual a razão de a linha com o comando read ser lida pelo interpretador
> Bash e não executada como esperado?
> - Será que linha com comando read não funciona dentro de "if´s" aninhados
> nesse release do Bash?
>
> Destaco e comparo os traces das execuções dos dois trechos que possuem o
> comando:
> Um que não executa, e outro que executa o comando read normalmente.
>
> Veja logo a seguir:
>
> + read -p 'Escolha entre (a)tualizar ou (n)ao a configuracao no B-router:
> '
> VAR
> + echo 'VAR = <>'
> VAR = <>
>
> No trecho do trace exibido acima, o comando não é apresentado e não pára
> pra
> receber o valor que seria atribuído à variável VAR...
> A execução passa reto, como se o comando não existisse!!!
>
> Já nesse outro trecho do mesmo script, abaixo, a linha do script é
> apresentada, é executada (pára pra receber o dado do teclado),
> e continua a execução normalmente, após acionar a tecla <ENTER>:
>
> read -p "Pressione <ENTER> para continuar..."
> + read -p 'Pressione <ENTER> para continuar...'
> Pressione <ENTER> para continuar...
>
> Eu já abri o arquivo do script com o vi, acionei o "set list" e nenhum
> caracter estranho aparece, a não ser aquele normal de fim de linha ($).
> Será que o comando não funciona em razão do nível de aninhamento de if´s?
> Não lembro de ter ouvido falar de nenhum compilador ou interpretador com
> esse tipo de limitação...
>
> De toda forma, obrigado!
> Vou tentar algum outro artifício pra contornar o problema!
>
> Grato a todos,
>
> Rodolfo Villanova
> Telefonica Empresas
> São Paulo - SP
> #----------------------------------------------------------
> > Re: Falha no comando read
> > Enviado por: "Flavio Junior" address@hidden <billpp%40gmail.com>
> > Qui, 22 de Mar de 2007 5:49 pm
> > O unico "erro" que eu vi, é que VAR deve estar na frente do prompt
> >
> > "erro" por que isso pode ter ocorrido devido ao corpo da msg no email,
> > exemplo:
> >
> > read -p "Testee: " VAR
> > XXXXXXXXXX<enter>
> > echo $VAR
> > XXXXXXXXXX
> >
> > Será isso?
> >
> > Flavio do Carmo Junior
> #----------------------------------------------------------
> > Re: Falha no comando read
> > Enviado por: "Julio C. Neves" 
> > address@hidden<julio.neves%40gmail.com>julioneves99
> > Qui, 22 de Mar de 2007 7:44 pm
> > Fala Tchê,
> > estava te achando sumido e agora descobri que é pq estavas freqüentando
> na
> > varanda da saudade? ;)
> >
> > Agora sério: além de ter de especificar a variável na frente do prompt,
> está
> > faltando um fecha chaves antes da main.
> >
> > if [ -z "$VAR" -o "$VAR" = "n" ]; then
> > return
> > fi
> > } <<<<=== Este aqui...
> > # ...
> > #
> > # Main
> >
> > Vê se não some. Me mande seu tel em pvt para tomarmos um chope durante o
>
> > FISL.
> >
> > Abração,
> > Julio
> #----------------------------------------------------------
> > Re: Falha no comando read
> > Enviado por: "Tiago Barcellos Peczenyj" 
> > address@hidden<tiago.peczenyj%40gmail.com>
> grande_uosh
> > Qui, 22 de Mar de 2007 6:08 pm
> > Se o read não tem uma variavel especificada, vai pra uma variavel
> chamada
> > REPLY
> >
> > # read -p "digite algo: "
> > digite algo: asd
> > # echo $REPLY
> > asd
> >
> > Agora...vc poderia usar o select
> >
> > $ echo "Escolha entre (a)tualizar ou (n)ao a configuracao no B-router: "
>
> > $ PS3='opcao: '
> > $ select OPT in A N; do echo $OPT ; done
> >
> > Escolha entre (a)tualizar ou (n)ao a configuracao no B-router:
> > 1) A
> > 2) N
> > opcao: 1
> > A
> > opcao: 4
> >
> > opcao:
> >
> > Ai é só colocar um if ou case dentro do select ;-)
> #----------------------------------------------------------
> >> Falha no comando read
> >> Enviado por: "rodvilla" address@hidden 
> >> <rodvilla%40ig.com.br>rodolfovillanova
> >> Qui, 22 de Mar de 2007 5:38 pm
>
> >> Caros amigos,
> >>
> >> Ao cumprimentar os novos amigos e os antigos (andei fazendo papel de
> >> saudosista e reli algumas das primeiras mensagens da lista, que este
> ano
> vai
> >> completar 7 anos, lembra, Eriberto, Julio?).
> >> Apelo a todos vocês antes que vá até um terreiro pra pedir ajuda a um
> >> pai-de-santo, porque já tentei resolver esse problema de diferentes
> formas e
> >> não consegui encontrar uma razão plausível para o que está ocorrendo.
> >>
> >> Abaixo segue algumas partes do script que elaborei.
> >> Num determinado trecho desse bash script, inseri um comando "read" para
>
> que
> >> o usuário, em prompt de comando, decida que ação tomar.
> >> Acontece que nessa linha o comando read não funciona; no entanto, em
> >> determinados trechos, de teste, ele funciona, mesmo que não utilize uma
>
> >> variável para receber um valor de entrada!
> >> Segue a parte em que o comando não funciona e a que funciona (teste),
> bem
> >> como o trace de execução.
> >> Segue também a localização do bash e a versão do bash que utilizo.
> >> Não localizei na internet nenhuma referência a alguma limitação ou bug
> desse
> >> release de bash.
> >>
> >> $ which bash
> >> /usr/bin/bash
> >> $ /usr/bin/bash -version
> >> GNU bash, version 2.05.0(1)-release (sparc-sun-solaris2.9)
> >> Copyright 2000 Free Software Foundation, Inc.
> >>
> >> Seguem partes do código:
> >>
> >> #!/usr/bin/bash -xv
> >> #
> >> #...
> >> #
> >> # Funcoes
> >> checa_cfg_sonda ()
> >> {
> >> # ...
> >> echo
> >> read -p "Escolha entre (a)tualizar ou (n)ao a configuracao no B-router:
> "
> >> VAR
> >> echo "VAR = <$VAR>"
> >> echo
> >> if [ -z "$VAR" -o "$VAR" = "n" ]; then
> >> return
> >> fi
> >> # ...
> >> #
> >> # Main
> >> #
> >> # ...
> >> checa_cfg_sonda
> >> # ...
> >> #### TESTE
> >> read -p "Pressione <ENTER> para continuar..."
> >> #### TESTE
> >> # fim do Bash script
> >>
> >> ------------------
> >> Trace da execução:
> >> ------------------
> >> ...
> >>
> >> + echo
> >>
> >> + read -p 'Escolha entre (a)tualizar ou (n)ao a configuracao no
> B-router:
> ' VAR
> >> + echo 'VAR = <>'
> >> VAR = <>
> >> + echo
> >>
> >> + '[' -z '' -o '' = n ']'
> >> + return
> >>
> >> ...
> >>
> >> #### TESTE
> >> read -p "Pressione <ENTER> para continuar..."
> >> + read -p 'Pressione <ENTER> para continuar...'
> >> Pressione <ENTER> para continuar...
> >> #### TESTE
> >> #------------------------
> >>
> >> Ficarei humilde e imensamente agradecido a quem puder apontar uma luz,
> pois
> >> já esmiucei o arquivo de ponta à cabeça e não consegui encontrar uma
> >> explicação que não fosse uma "mariposa" obliterando um relé!... (rs)
> >>
> >> Grato,
> >>
> >> Rodolfo Villanova
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


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



reply via email to

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