【linux】shell创建用户,报错“passwd: Unknown user name '}''.”

思路:
判断用户是否存在,标记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"


输出如下:
【linux】shell创建用户,报错“passwd: Unknown user name '}''.”


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

回答

用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。

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

以上是 【linux】shell创建用户,报错“passwd: Unknown user name '}''.” 的全部内容, 来源链接: utcz.com/a/82888.html

回到顶部