Проверьте, существует ли пользователь

Я хочу создать скрипт, чтобы проверить, существует ли пользователь. Я использую логику ниже:

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

Таким образом, если пользователь существует, то у нас есть успех, иначе пользователь не существует. Я поместил вышеуказанную команду в скрипт bash, как показано ниже:

#!/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

Теперь мой сценарий всегда говорит, что пользователь существует независимо от того, что:

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

Почему вышеупомянутое условие всегда оценивается как ИСТИНА и говорит, что пользователь существует?

Куда я иду не так?

ОБНОВИТЬ:

Прочитав все ответы, я обнаружил проблему в своем сценарии. Проблема была в том, как я перенаправлялgetent выход. Таким образом, я удалил все вещи перенаправления и сделалgetent линия выглядит так:

getent passwd $user  > /dev/null

Теперь мой скрипт работает нормально.

Ответы на вопрос(12)

Ваш ответ на вопрос