Bash, curioso sobre a variável $ echo

6

Eu estava hackeando um pequeno script antes e notei algo que não consigo explicar.

Executando este comando

(time wget --spider http://www.google.co.uk/) 2>&1  | egrep 'real|response'

me dá essa saída (o que eu espero)

HTTP request sent, awaiting response... 200 OK
real    0m0.086s

Eu capturei a saída acima em uma variável

Result=$((time wget --spider http://www.google.co.uk/) 2>&1  | egrep 'real|response')

Se eu

echo "$Result"   

Eu recebo a saída esperada

HTTP request sent, awaiting response... 200 OK
real    0m0.086s

No entanto, se eu

echo $Result

Eu obtenho

HTTP request sent, awaiting response... 200 OK real    0m0.086s

Por que isso?

    
por Iain 26.05.2011 / 19:41

2 respostas

12

O comando echo $Result converterá o valor da variável em múltiplos argumentos para echo, dividindo em qualquer espaço em branco e echo imprime todos os argumentos separados por espaços. Por outro lado, echo "$Result" colocará a string inteira, incluindo espaço em branco, no primeiro e único argumento de eco, que é impresso diretamente.

    
por 26.05.2011 / 19:44
0

A resposta de Adam me apontou na direção certa, pois está relacionada ao espaço em branco. Mais especificamente, o \n entre as duas linhas é interpretado como espaço em branco e é convertido em um único , ao usar $Result , mas é deixado como \n ao usar "$Result" .

Eu nunca realmente considerei '\ n' como espaço em branco antes.

    
por 27.05.2011 / 14:54

Tags