Seus arquivos de texto têm Windows / DOS CRLF finais de linha .
As strings são concatenadas corretamente, mas o byte de retorno de carro é deixado no final de vname
e mname
, porque não faz parte de uma linha que termina em Unix e não foi usada por read
. Quando você imprime a string, a exibição é desconfigurada. O transporte retorna o cursor de volta para o início da linha (como uma máquina de escrever), permitindo que o texto seja sobrescrito.
Quando você imprime algum texto com um retorno de carro nele, o texto até o CR aparece como normal, então o cursor de saída volta para o início e partes posteriores da seqüência de caracteres estão sendo impressas por cima do início partes. É por isso que o " *.nc
" aparece no início da linha na saída informada, mesmo que " ${extn}
" seja o último - mname
termine com um retorno de carro.
Você pode executar seus arquivos de texto através de dos2unix
para remover os bytes extras de retorno de carro. Você também pode usar ${vname%$'\r'}
no script para truncar ao final < href="https://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting"> CRs se você não quiser ou não puder modificar os arquivos. / p>