O código a seguir descreve melhor a situação. Por que a última linha não está exibindo o caractere de nova linha à direita? A saída de cada linha é mostrada no comentário. Estou usando o GNU bash, versão 4.1.5
echo -n $'a\nb\n' | xxd -p # 610a620a
x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a
echo -ne "a\nb\n" | xxd -p # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62
tmp=$(somecommand; echo a)
... Isso certamente levou o ponto para casa ... Até eu ver o exemplo, minha tendência ainda seria usar echo -n a
... mas, é claro !, não há necessidade de o -n
, porque Comando Substituição irá remover o final de linha introduzida em qualquer caso! ... graças ...
tmp=$(somecommand; echo a); tmp=${tmp%a}