Чтение из sh-файла?
В unix перевод строки обозначаеться символом line feed (lf, \n, 0x0a, 10).
В windows - последовательностью carriage return + line feed (crlf, \r\n, 0x0d0a, 13 10).
Bash не распознаёт carriage return и выводит собщение об ошибке.
Чтобы избавится от спецсимволов, то удалить все пробелы и переводы коретки и восстановить структуру уже в той ОС, в которой предполагается работать.( самое тупое и простое). В Редакторах существуют спец функции