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

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

Re: [shell-script] Como armazenar a saida de erro em variável?


From: Julio C. Neves
Subject: Re: [shell-script] Como armazenar a saida de erro em variável?
Date: Sun, 18 May 2008 00:07:42 -0300

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 <address@hidden>:

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



reply via email to

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