Isso porque você está executando o read em uma substituição de comando ( $() ). Não há necessidade disso. Apenas use:
read -p Enter -r rr
echo "Is $rr"
A sintaxe var=$(command) definirá o valor de var para o que for retornado por command . O read builtin não retorna nada (além de seu status de saída, mas isso não é relevante aqui), então sua variável permanece vazia. A sintaxe de read é read VAR e definirá o valor de $VAR .