FWIW, seu código funciona para mim.
$ echo | bash -c 'read -rN1; echo "$BASH_VERSION <$REPLY>"'
4.2.36(1)-release <
>
Com -N
, não é necessário definir IFS
e NL acaba em $ REPLY. Um $REPLY
vazio significaria apenas NUL ( <Ctrl-Space>
) ou EOF ou um erro (o status de saída seria diferente de zero para esses dois)