Newline é o nome do caractere de nova linha, ou seja, o caractere geralmente escrito como \n em C:
$ p="a\
b"; echo "$p"
ab
O resultado é ab em vez de \a<newline>b , pois o padrão POSIX diz :
A
<backslash>that is not quoted shall preserve the literal value of the following character, with the exception of a<newline>. If a<newline>follows the<backslash>the shell shall interpret this as line continuation. The<backslash>and<newline>shall be removed before splitting the input into tokens. Since the escaped<newline>is removed entirely from the input and is not replaced by any white space, it cannot serve as a token separator.
Mas a string é citada com aspas duplas ... Bem, este é um caso especial:
The
<backslash>shall retain its special meaning as an escape character only when followed by one of the following characters when considered special:$,',",\,<newline>.
Portanto, a cadeia entre aspas duplas significa que a linha invertida-nova linha é interpretada como se não fosse citada, o que significa que ela funciona como uma continuação de linha e a barra invertida e a nova linha são removidas .
Observe que isso acontece quando você atribui à variável p , não quando você echo it.
Veja também " link "sobre a necessidade de citar suas variáveis, sempre.