linux - shell创建用户,报错“passwd: Unknown user name '}''.”
PHPz
PHPz 2017-04-17 13:54:01
[Linux讨论组]

思路:
判断用户是否存在,标记flag
存在,修改用户密码
不存在,创建用户并修改密码


#!/bin/bash
#the script act on a batch of add user,username at the same password 
name="admin"
password="demo"
userList="cat /etc/passwd | awk -F ':' '{print $1}'"
flag=false
for name in $userList; do
    #statements
    flag=true
done
if [ $flag=true ]; then
    #change password
    echo "user exist"
else
    echo "create user admin"
    useradd /home/$name $name
fi
echo "change password to demo"
echo $password | passwd --stdin $name
echo "succeed"

输出如下:


实际:
用户不存在且没有创建成功

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

用id命令判断岂不是更方便?

id admin >& /dev/null
if [ $? -ne 0 ]
then
#不等于0,创建用户
    echo "create user admin"
    useradd -d /home/admin -m admin
else
#等于0说明用户已经存在
    echo "user exist"
fi

注意你的useradd指定家目录参数,否则是执行不成功的。
而且判断用户是否存在于/etc/passwd中,也可以用:

grep admin /etc/passwd >& /dev/null;echo $?

看看是否等于0。

天蓬老师

你这用户应该是包含了}符号的原因

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号