Fala Ednei, vc se enganou qdo disse que a saída da variável seria linear. Estou escrevendo isso não é para te corrigir, é pq é um erro *muito freqüente* então vale a pena mostrar pra todos. Veja este exemplo:
$ var="linha1 > linha2" $ echo $var linha1 linha2 $ echo "$var" linha1 linha2 Agora veja esse: $ var="a a" $ echo $var a a Mais unzinho: $ oIFS="$IFS" $ IFS=: $ var=$(grep ^root /etc/passwd) $ echo $var root x 0 0 root /root /bin/bash # Xiiiii, roubaram os dois-pontos! $ echo "$var" root:x:0:0:root:/root:/bin/bash # Puxa, ainda bem! $ IFS="$oIFS" $ echo "$IFS" | od -h 0000000 0920 0a0a O od -h de dá um dump em hexadecimal, onde: 09 - <TAB> 20 - <espaço em branco> 0a - <ENTER> o segundo 0a foi o <ENTER> que dei ao final da linha. IFS significa Internal Field Separator, ou seja, campo separador interno. O shell tem muita implicância com o IFS, assim toda vez que o vê, ele o mostra como um espaço em branco. Para que isso não aconteça, vc deve protegê-lo do Shell com aspas. Então com o IFS padrão, sempre que uma variável possuir <TAB>, <ENTER> ou diversos espaços consecutivos, proteja-a da bisbilhotice do Shell usando aspas. Para treinar, faça: var=$(ls -l) e liste $var para ver a zona que fica. SuShellso a todos, Julio 2008/5/16 Édnei Rodrigues <[EMAIL PROTECTED]>: > BOm, eu tb faço desta maneira. Ou jogo a saida de erro num arquivo ou > trato-a fazendo um "IF $? =0" ou 1, depende do que vc quer. No > entanto, se vc jgoar numa variável, ficará xarope de tratar, pois ira > gravar o erro , na variável, linearmente, ou seja, sem quebra de > linha. > O melhor a fazer e jogar num arquivo e buscar oque vc quer, usando SED. > > [As partes desta mensagem que não continham texto foram removidas]
