@DamianOgre: Eu acho que você está pensando demais nisso. Você não precisa contá-los, apenas faça um loop pelos nomes retornados.
who | cut -d " " -f 1| sort -u | while read user
do
echo "Hi there!" | mail $user
done
P.S .: Eu AMO awk, mas aqui o corte vai funcionar bem. :) P.P.S .: Alguns comandos podem diferir em sua configuração, pode ser mailx, mutt, ...