El siguiente código describe mejor la situación. ¿Por qué la última línea no emite el carácter de línea nueva final? La salida de cada línea se muestra en el comentario. Estoy usando GNU bash, versión 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)
... Esto ciertamente ha llevado el punto a casa ... Hasta que vi el ejemplo, mi tendencia todavía habría sido usar echo -n a
... ¡pero, por supuesto !, no hay necesidad de el -n
, porque la sustitución de comandos eliminará la nueva línea final introducida en cualquier caso. ... gracias ...
tmp=$(somecommand; echo a); tmp=${tmp%a}