O motivo está na sua primeira variável ( new_line
), existe apenas uma sequência de escape (ou seja, \n
= backslash
seguido por n
) que é passado inalterado para echo
, enquanto na segunda um ( cur_log
), existem novas linhas reais que são removidas pelo shell que faz parte da variável IFS
.
Uma nova linha é, sob Unix / Linux, um único caractere que o código ASCII é 10
(line- alimentação). Quando um arquivo contendo esse caractere é exibido na tela, ele é convertido em dois caracteres, retorno de carro mais feed de linha ( CR-LF
), 10
+ 13
. Quando um editor como gedit
abre esse arquivo, ele armazena cada linha separadamente. O avanço de linha é usado apenas para detectar a separação entre duas linhas contíguas. \n
é composto por dois caracteres, ASCII 92
+ 110
. Se você editar um arquivo contendo ocorrências de \n
, esses dois caracteres permanecerão inalterados e exibidos como estão, ao contrário das novas linhas reais.