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

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

Re: [shell-script] Exibição variaveis


From: Julio C. Neves
Subject: Re: [shell-script] Exibição variaveis
Date: Sat, 21 Apr 2007 23:57:34 -0300

Em 21/04/07, mop <address@hidden> escreveu:
>
> Opa Julio:
>
> Diante do tamanho da string, ainda assim, eu não exitaria em guardar
> a saída de stdout em uma nova variável economizando os tubos, digo,
> um pipe, mais ainda considerando ser o sed o destinatário.


Como eu te disse, eu não me lembro legal do problema inicial, mas acho que a
solução que dei foi para evitar um loop de leitura (e ai nesse caso a
substituição de parâmetros seria sensacional) e por isso preferi um único
pipe a várias substituições de parâmetros. Mas como disse, não me lembro bem
do problema inicial do colega.

Aproveitando, depois que enviei a mensagem me toquei que cometi um
> erro. Ele não apareceu no bloco porque setei variável, mas de outra
> forma poderia ter ficado claro. Octais são representados no shell
> prefixados por \0 e hexadecimais por \x, ou seja, onde escrevi \15
> deveria ter escrito \015. Eis como faz diferença:
>
> prompt> z=$'\15\015';echo -ne "$z\15\015"|xxd
> 0000000: 0d0d 5c31 350d                           ..\15.
>
> Prefiro sempre visualizar em hexa, por isso uso muito o xxd (vim).
> Estou meio enferrujado no uso da base binária. :)


Isso é cocoete de programdor C. Qdo programo muito em C, as vezes faço algo
parecido... :~(

Quanto ao conteúdo do post, fique à vontade para usá-lo em qualquer
> lugar, sendo de minha parte dispensada qualquer citação de origem.


Não amigo, o Rubens Queiroz incentiva muito iniciativas assim e é um cara
muito legal. Mande um e-mail para ele submetendo a sua solução que, no
mínimo, vc trocará idéias com um cara sensacionalmente legal.

Já vi o que falei, e muito mais, neste link:
> http://planeta.dyndns.org/unix/exemplos.txt


Não é para me gabar não, mas em
http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo009 tb fala
tudo sobre substituição de parâmetros e está muito bem explicado.

Prefiro sempre que possível apenas citar links ao invés de teclar.
> No histórico da lista vi como questões se repetem indefinidamente.
> Bom seria uma consolidação em faq ou wiki, algo mais ágil na
> consulta, mas é difícil manter.


Eu costumo explicar mais ou menos e tb passar os links, mas 98% do que já se
abordou nesta lista está no Papo de
Botequim<http://twiki.softwarelivre.org/bin/view/TWikiBar/WebHome#Livro_de_Shell_em_Portugu%25EAs>

Qto a consolidação proposta, se fosse passada para um pdf ou um odt com
índice remissívo, creio que isso daria uma excelente fonte de consulta.
Afinal a lista já tem 7 anos e uma média de 500 msg/mês. É muito acervo!
Será que alguém se habilita?

Por enquanto a melhor forma de consulta é na lista http://news.gmane.org,
grupo gmane.org.user-groups.programming.shell.brazil

Em Tempo: fui no news group acima para donfirmar o endereço e aproveitei
para ver o histórico da thread. O negócio foi diferente... o colega fez um
post com um script perfeito e disse que qdo imprimia, perdia algumas
variáveis. Como eu já tinha passado por isso e era sujeira (CRTL+...) sugeri
que ele imprimeisse com um cat -vet para ver se tinha caracter de controle.
Bingo! (Hi, isso agora dá cadeia :), era o famigerado carriage return (^M)
do DOS. Em seguida ele fez outro post agradecendo e dizendo que ia tirar os
\r com o sed. Sem pensar muito sugeri o uso do tr, já que ambos são externos
e o tr tem um código menor que o sed (se bem que o sed para tratar arquivos
inteiros é muito veloz pq ele dá uma pré-compilada (bit-code) no script).

Chega! Já teclei muito! Abração,
Julio
:wq


[]s
>
> ------------------------------------------------------------------
> >From: "Julio C. Neves" <address@hidden>
> >Date: Sat, 21 Apr 2007 10:48:48 -0300
> >
> >Fala Mop,
> >concordo totalmente com vc na afirmativa que "me parece um exagero a
> carga
> >de um programa externo para retirar 1 byte de uma string de cerca de 16
> >bytes", mas infelizmente a técnica de expansão de parâmetros aplica-se
> >somente a variáveis e, se não me engano, o problema apresentado era em um
> >arquivo que não estava sendo trabalhado em loop.
> >
> >Mas a dica é muito boa e acho que vc deveria mandá-la para o Cantinho do
> >Shell das Dicas-l.
> >
> >Abração,
> >Julio
> >:wq
> >
> >Em 20/04/07, mop <address@hidden> escreveu:
> >>
> >> Apenas uma opinião:
> >>
> >> Claro que usar programas externos resolve, mas me parece um exagero
> >> a carga de um para retirar 1 byte de uma string de cerca de 16 bytes.
> >>
> >> A linha no "unix" termina com x0A, assim como no "dos" e seus
> sucessores.
> >> O detalhe é que a ms usa um "carriage return" (x0D) antes de cada
> >> "new line" e esse byte sobra então no fim da linha em leitores tipo
> unix.
> >> Preparei o bloquinho abaixo, já com new lines ignoradas, para colar
> direto
> >> na console de uma vez e ver o resultado com uma tecla. Se não
> selecionar
> >> nenhuma linha além do echo, o Enter fica por sua conta. :)
> >>
> >> z=$'ABC\rD\15E\x0dF';\
> >> cat -v<<<$z;\
> >> cat -v<<<${z%?};\
> >> cat -v<<<${z/$'\r'};\
> >> cat -v<<<${z//$'\r'};\
> >> echo $z
> >>
> >> Tudo funcionou como esperava no:
> >> $ bash -version
> >> GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu)
> >> Copyright (C) 2005 Free Software Foundation, Inc.
> >>
> >> Se a string já está numa variável e, supondo que se chame z, o último
> byte
> >> pode ser retirado pelo próprio shell simplesmente com
> >> ${z%?}
> >>
> >> Espero que seja de alguma utilidade.
> >> Questões?
> >> man bash
> >>
> >>
> >> ------------------------------------------------------------------
> >> >From: Fernando Garcia <address@hidden>
> >> >Date: Fri, 20 Apr 2007 18:01:37 -0300
> >> >
> >> >Olha o que aparecia:
> >> >
> >> >n: Fa0/47;2;2;1;Shutdown^M$ (Lembra microsoft, acho q por isso nao
> >> >funcionava :-D
> >> >
> >> >Removi com um sed e ta funcionando agora.
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> Links do Yahoo! Grupos
>
>
>


-- 
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]