Проверьте, существует ли пользователь
Я хочу создать скрипт, чтобы проверить, существует ли пользователь. Я использую логику ниже:
# 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
Теперь мой скрипт работает нормально.