KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want to create a script to check whether a user exists. I am using the logic below: # getent passwd test > /dev/null 2&>1 # echo $? 0 # getent passwd test1 > /dev/null 2&>1 # echo $? 2 So if the user exists, then we have success, else the user does not exist. I have put above command in the bash script as below: #!/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 Now, my script always says that the user exists no matter what: # sh passwd.sh test yes the user exists # sh passwd.sh test1 yes the user exists # sh passwd.sh test2 yes the user exists Why does the above condition always evaluate to be TRUE and say that the user exists? Where am I going wrong? UPDATE: After reading all the responses, I found the problem in my script. The problem was the way I was redirecting getent output. So I removed all the redirection stuff and made the getent line look like this: getent passwd $user > /dev/null Now my script is working fine.
Tags (comma-separated)
Save Edits
Cancel