O problema aqui está na sua linha while read message . Por padrão, read termina em uma nova linha, mas você pode passar outro caractere com a opção -d .
A pergunta a fazer é em suas linhas LOGXXXX, como o script sabe quando a entrada está terminada? Se você puder colocar um caractere especial no final, poderá usar read -d . Caso contrário, você poderia substituir as novas linhas por outra coisa e colocá-las de volta depois.
Então, no seu exemplo:
function handleMessage {
while read message
realmessage='echo $message | tr '|' '\n''
do
# Handle $realmessage
done
}
nc -d $ipadd $port | tr '\n' '|' | handleMessage
Então, você está substituindo todas as novas linhas com | , para que todas elas entrem na chamada read e, em seguida, você as divida depois.