+ Responder ao Tópico



  1. #1
    Avatar de diegochd
    Ingresso
    Jan 2009
    Localização
    Conselheiro Lafaiete, Brazil
    Posts
    12

    Padrão Shell muito louco!!!

    Pessoal, é até difícil explicar, não faço ideia do que pode ser. Veja os comandos abaixo.

    Linux:/home/admin# cat /tmp/result_btest.txt
    "tx"=444442216
    "rx"=374684144


    Linux:/home/admin# TX=`sed -n '1p' /tmp/result_btest.txt | cut -f2 -d =`
    Linux:/home/admin# echo $TX
    444442216

    Até aqui Tudo bem, o sed pegou a linha certa no arquivo e o cut pegou o dado que eu preciso. Agora vem o mistério, esse numero seguido da palavra bytes. Olha o que acontece:

    Linux:/home/admin# echo $TX bytes
    bytes216
    Linux:/home/admin# echo $TX aa
    aa442216

    A palavra que vem depois da variável é impressa sobre a variável. O curioso que é isso só acontece qdo o valor vem de um comando como o sed. Se eu setar a variável com o valor direto (Tx=444442216) isso não acontece.

    Alguém sabe o que é isso?

    Agradeço desde já.

  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão Re: Shell muito louco!!!

    Normal aqui:
    Código bash:
    osmano807@notebook_dv5 /tmp % zsh --version
    zsh 4.3.12 (x86_64-unknown-linux-gnu)
    osmano807@notebook_dv5 /tmp % cat /tmp/result_btest.txt 
    "tx"=444442216
    "rx"=374684144
    osmano807@notebook_dv5 /tmp % cat /tmp/teste.sh 
    TX=$(sed -n '1p' /tmp/result_btest.txt | cut -f2 -d'=')
    echo $TX bytes
    osmano807@notebook_dv5 /tmp % ./teste.sh 
    444442216 bytes

    Eu só uso o zsh, não sei se dá lá tanta diferença, era pra ser compatível.
    Última edição por osmano807; 22-07-2011 às 09:53.



  3. #3

    Padrão Re: Shell muito louco!!!

    Tenta:
    Código :
    echo "$TX bytes"

  4. #4
    Avatar de diegochd
    Ingresso
    Jan 2009
    Localização
    Conselheiro Lafaiete, Brazil
    Posts
    12

    Padrão Re: Shell muito louco!!!

    Hebang
    (usa Arch Linux)
    Parece que tem um \r no final da linha no arquivo.
    Por acaso esse arquivo nao foi criado no Ruindows?

    Tente colocar um "tr -d '\\r' depois do cut que pega esse dado.

    Caso nao funcione, tente analisar os ultimos caracteres do arquivo, usando o comando "od". Com certeza tem um caracter de controle no final dessa linha.

    Espero ter ajudado!