Кажется, что Bash конвертирует LF в LFCR. Действительно, вот пример ниже, который описывает, что:
text=$(echo -e "foo\nbar\ntir")
При установке IFS на конец строки LF:
IFS=$(echo -e "\n")
\n
в строке text
не интерпретируется, как показано ниже:
for w in $text ; do echo ${w}';' ; done
Выход:
foo
bar
tir;
Здесь символ ";" Использование в качестве маркера показывает, что $text
содержит только один элемент, и поэтому \n
не интерпретируется, хотя он был установлен как IFS.
Но теперь, при установке IFS в конец строки LFCR:
IFS=$(echo -e "\n\r")
вывод предыдущей команды превращается в:
foo;
bar;
tir;
Маркер ";" показывает, что $text
содержит три элемента и, таким образом, \n
в $text
интерпретируется как \n\r
(LFCR), установленный как IFS.
Так почему же Bash конвертирует LF в LFCR? Если это не так, каково основное объяснение, пожалуйста?