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>