Eu suspeito que você tenha editado o arquivo em algum lugar que tenha adicionado finais de linha no estilo DOS. Execute seu arquivo através de dos2unix
para se livrar deles.
dos2unix yourscriptfile
Em um dos meus scripts bash, estou criando um arquivo repetidamente usando echo
com o redirecionamento de saída para anexar ao arquivo. O arquivo resultante, no entanto, não é nomeado corretamente, mas sempre tem um caractere ^M
não imprimível anexado ao final. Alguém sabe o que estou fazendo errado? O script simples a seguir demonstra o problema:
#!/bin/bash
# Should create 'concat.txt' instead creates 'concat.txt^M'
outfile="concat.txt"
echo "'"$outfile"'"
for item in "Able" "Baker" "Charlie"; do
echo $item >> $outfile
done
Sistema: Ubuntu 9.04 (x64)
^M
é o que você veria no final de cada linha se você definir a linha que termina no modo unix quando o arquivo foi gravado inicialmente no modo dos em que os finais de linha são \r\n
Então, enquanto você vê
echo $item >> $outfile
o unix vê:
echo $item >> $outfile^M
Primeiro,
:set ff=unix
Então:
:%s/\r//
para remover o ^ M
EDITAR
Por alguma razão boba eu assumi que você está usando o vim. Talvez porque é o único editor que vi mostrar o \r
as ^M
. De qualquer forma, faça o que Dennis Williamson disse, use a ferramenta dos2unix
.
Tags bash