Presumivelmente, o seu navegador está interpretando o arquivo para o qual você está apontando como HTML. Em HTML, uma nova linha não é \n , mas a tag <br> , então você precisa adicionar isso. Por exemplo:
#!/usr/bin/env bash
. ~/bin/getvars
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/$/<br>/'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/$/<br>/'
else
echo No Records Found
fi
No meu Debian, o firefox interpreta \n como quebras de linha se o arquivo não tem extensão .html (eu tentei sem extensão e .txt ), então isso pode ser uma solução alternativa, mas não tenho idéia de como seria portável estar.
Uma alternativa melhor seria torná-la uma página HTML adequada, usar <pre> tags e substituir todos os < e > por seus equivalentes em HTML:
#!/usr/bin/env bash
. ~/bin/getvars
echo "<HTML><BODY><pre>"
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/>/\>/g;s/</\</g;'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/>/\>/g;s/</\</g;'
else
echo No Records Found
fi
echo "</pre></BODY></HTML>