Compruebe si un usuario existe

Quiero crear una secuencia de comandos para comprobar si existe un usuario. Estoy usando la lógica a continuación:

# getent passwd test > /dev/null 2&>1
# echo $?
0
# getent passwd test1 > /dev/null 2&>1
# echo $?
2

Entonces, si el usuario existe, entonces tenemos éxito, de lo contrario el usuario no existe. He puesto el comando anterior en el script de bash como se muestra a continuación:

#!/bin/bash

getent passwd $1 > /dev/null 2&>1

if [ $? -eq 0 ]; then
    echo "yes the user exists"
else
    echo "No, the user does not exist"
fi

Ahora, mi script siempre dice que el usuario existe sin importar qué:

# sh passwd.sh test
yes the user exists
# sh passwd.sh test1
yes the user exists
# sh passwd.sh test2
yes the user exists

¿Por qué la condición anterior siempre se evalúa como VERDADERA y dice que el usuario existe?

¿A dónde me voy mal?

ACTUALIZAR:

Después de leer todas las respuestas, encontré el problema en mi script. El problema era la forma en que estaba redireccionando.getent salida. Así que quité todas las cosas de redirección e hice elgetent la línea se ve así:

getent passwd $user  > /dev/null

Ahora mi guión está funcionando bien.

Respuestas a la pregunta(12)

Su respuesta a la pregunta