Вы можете проанализировать вывод команды file
. Для текстовых файлов с окончанием строки \ n выводится ASCII text ...
, а для текстовых файлов с окончанием строки \ r \ n выводится ASCII text ... with CRLF line terminators
. Обратите внимание, что в зависимости от фактического содержимого файла вместо «...» может содержаться дополнительная информация. Следовательно, вы можете сделать что-то вроде
file YOURFILE | grep -q '^ASCII text.*with CRLF'
((is_dos_text_file=1-$?))
Переменная is_dos_text_file
содержит значение 1, если YOURFILE оценивался по файлу как текстовый файл с окончаниями CRLF. Это 0, если YOURFILE либо имеет окончания строки Unix, либо не был определен как текстовый файл.
ОБНОВЛЕНИЕ: Я только что заметил, что вы использовали тег shell в своем сообщении и, следовательно, искали решение для Posix Shell. В этом случае конструкция ((...))
не может быть использована, и вам придется сделать что-то вроде
if file YOURFILE | grep -q '^ASCII text.*with CRLF'
then
is_dos_text_file=1 # true
else
is_dos_text_file=0 # false
fi
чтобы получить тот же эффект.