Bash 如果don';不存在
我正在尝试创建一个shell脚本,请求用户输入。如果用户存在,它会让您知道;如果用户不存在,它将创建用户和密码并将其添加到组中。然而,我被困住了,希望有人能帮助我。它似乎在读取响应后停止,并且不执行if/then 以下是我到目前为止的情况:Bash 如果don';不存在,bash,if-statement,Bash,If Statement,我正在尝试创建一个shell脚本,请求用户输入。如果用户存在,它会让您知道;如果用户不存在,它将创建用户和密码并将其添加到组中。然而,我被困住了,希望有人能帮助我。它似乎在读取响应后停止,并且不执行if/then 以下是我到目前为止的情况: #!/bin/bash echo "Which user would you like to use docker? " read -r user getent passwd "$user" > /dev/n
#!/bin/bash
echo "Which user would you like to use docker? "
read -r user
getent passwd "$user" > /dev/null 2&>1 && echo yes || echo no
read -r response
if [ "$response" == "yes" ];then
echo " User already exist"
if [ "$response" == "no" ];then
useradd -m $user
passwd $user
usermod -aG docker $user
fi
fi
使用随机密码或设置如下所示的密码,我猜passwd命令是这里的问题,因为在您的示例中,它需要响应:
#!/bin/bash
group="docker"
password1="$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n';echo)"
read -p "Which user would you like to use docker: " user
grep -q ${user} /etc/passwd
# If grep command was true, we know user exist
if [[ "$?" = "0" ]];then
echo "${user} already exist"
else
# We can use 'read -p' instead of using echo + read
read -p "Add a password for ${user}: " password
# We can use -m and -G in same line
useradd -m ${user} -G ${group}
# Use read -p for set a password or use password1 for a random pass
chpasswd <<< ${user}:${password}
# Another way to add password without passwd
# echo ${user}:${password} | chpasswd
# Let us know user was added in group docker and with a password
echo "Successfully added ${user}/${group} and password has been set to ${password}......."
fi
#/bin/bash
group=“docker”
password1=“$(strings/dev/uradom | grep-o'[:alnum:]'| head-n8 | tr-d'\n';echo)”
阅读-p“您希望使用哪个用户docker:”用户
grep-q${user}/etc/passwd
#若grep命令为true,我们就知道用户存在
如果[[“$?”=“0”];然后
回显“${user}已存在”
其他的
#我们可以使用'read-p'代替echo+read
阅读-p“为${user}添加密码:”password
#我们可以在同一行中使用-m和-G
useradd-m${user}-G${group}
#使用read-p设置密码,或使用password1进行随机传递
chpasswd您不需要输出yes
或no
;if
语句可以测试getent
的退出状态,就像&
一样
echo "Which user would you like to use docker? "
IFS= read -r user
if getent passwd "$user" > /dev/null 2>&1; then
echo "User already exists"
else
useradd -m "$user" &&
passwd "$user" &&
usermod -aG docker "$user"
fi
请首先在粘贴脚本,然后尝试实现那里提出的建议。我做到了。因此,我在这里发布更多帮助的原因。我是一个bashshell脚本noob。2&>1
创建一个名为1
的文件。我建议使用2>&1
将stderr重定向到stdout。它指定用于字段拆分的字符。在这种情况下,将其设置为null将保留输入中可能出现的任何前导或尾随空格。这可能是您想要放弃它的地方,但是考虑到仍然有很多方法可以输入无效的用户名,最好使用它,除非您有充分的理由不这样做。