-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