Você está próximo, mas o problema principal é que a construção bash [[ ]] não pode ter espaços entre os colchetes. Acho que você está tentando fazer vários comandos [ , que é o comando POSIX test . Se você consertar que funciona, mas se o usuário tiver múltiplos ttys open, ele irá imprimir seu nome uma vez para cada um. Se você quiser usar grep , você pode fazer isso:
#!/bin/bash
read -p "Please enter the user name you would like to search: " userName
if who | awk '{print $1}' | grep -wq "$userName"
then
echo "$userName is logged in."
else
echo "That user is not logged in.";
fi
exit