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