-c significa que você deseja saber o número de vezes que esse usuário está em /etc/passwd , enquanto $? é o código de saída. São diferentes, já que o número de vezes é impresso no stdout. Use $() para obter stdout em uma variável
Segundo problema: todas as suas variáveis, como $uzer , não serão substituídas por seus valores quando estiverem entre aspas simples. Use aspas duplas.
number=$(grep -c "^${uzer}:" /etc/passwd)
if [ $number -gt 0 ]; then
echo "User does exist :)"
else
echo "No such user"
fi