Acho que é porque $(...)
. Essa substituição remove automaticamente o caractere de nova linha final. Esse é um bom comportamento padrão.
Por que:
[ "a" != "$(printf "\na")" ] && echo true || echo false
imprima true
enquanto:
[ "a" != "$(printf "\n")a" ] && echo true || echo false
imprimir false
?
Tags shell-script printf