Se você tiver alguns arquivos que são arquivos de texto do DOS e alguns que são arquivos de texto Unix, seu script pode passar todos os dados por dos2unix
:
dos2unix <filename |
while IFS= read stuff; do
# do things with "$stuff"
done
Arquivos de texto Unix não seriam modificados por isso.
Para lidar adicionalmente com as quebras de linha do Mac, acredito que você possa fazer
dos2unix <filename | mac2unix |
while IFS= read stuff; do
# do things with "$stuff"
done
A última linha não é gerada pelo loop read
, pois não é terminada e, portanto, não é uma linha.
Para detectar se um arquivo não tem nova linha de término na última linha e adicione um, se não tiver, em bash
:
if [ "$( tail -c 1 filename )" != $'\n' ]; then
printf '\n' >>filename
fi
Relacionados: