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.