Parece que você está pedindo o "Você deseja criar um novo usuário (s / n):" prompt e a entrada para estar dentro do < em> while condicional.
Tente:
#!/bin/bash
while [[ "$(read -p "Do you want to create a new user (y/n): " x; echo $x)" == "y" ]] ; do
echo "Enter username: "
read username
echo "Enter first name: "
read firstname
echo "Enter last name: "
read lastname
useradd -g staff -c "${firstname} ${lastname}" -s /bin/bash $username
mkhomedir_helper $username
done
Isso deve pedir confirmação antes que a iteração comece.