我想创建一个脚本来检查用户是否存在。我使用的逻辑如下:
# 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
为什么上面的条件总是评估为TRUE,并说用户存在?
我哪里说错了?
更新:
在阅读了所有的回复后,我在我的剧本中发现了问题。问题是我重定向get输出的方式。所以我删除了所有重定向的东西,并使get行看起来像这样:
getent passwd $user > /dev/null
现在我的脚本运行正常。