espaço no final da variável é eliminado na saída

1

Estou em Ubuntu 12.04 com bash 4.2.25(1)-release . Se eu usar

#!/bin/bash
echo -n 'test ' > text;
echo 'test2' >> text;

tudo funciona bem e a saída de text é test test2 . Mas se eu usar

#!/bin/bash
TEST='test ';
echo -n $TEST > text;
echo 'test2' >> text;

o espaço no final de $TEST foi removido e text contém testtest2 .

Por quê? Como posso evitar isso?

    
por David 29.10.2013 / 22:45

1 resposta

3

Como sempre, a resposta está na citação.

echo -n $TEST > text

Isso será expandido para:

echo -n test  > text

Observe os dois espaços após test . Os únicos argumentos echo são -n e test . Nada mais. O espaço se perde aqui. Para mantê-lo, você precisa cotar duas vezes $TEST :

echo -n "$TEST" > text

Veja também: Citações e escapando no wiki do Bash Hackers.

    
por 29.10.2013 / 22:57

Tags