结合while true编写可视化创建用户密码Shell

while循环是Shell中常用的语法结构,常用格式

格式一

while 条件;

do

    语句

done

格式二 死循环

while true

do

    语句

done

格式三 死循环

while :

do

    语句

done

知识点二

if [ -n str1 ]       当串的长度大于0时为真(串非空) 
if [ -z str1 ]        当串的长度为0时为真(空串) 
if [ str1 ]         当串str1为非空时为真
shell 中利用 -n 来判定字符串非空。

直接通过变量判断

read -p "input string" dmin
if [ ! "$dmin"];then
#以下三种写法都可判断dmin值是否为空
#[ -z "$dmin" ]..
#[ ! -n "$dmin" ]..
#[ "$dmin" -eq "" ]..
 echo "dmin is NULL!"
else 
 echo "dmin is $dmin!"
fi

结合创建用户命令,可写出

以下省略判断root权限

echo "===================新建用户======================"
#add user
while true
do 
 read -p "请输入新用户名:" name
 NAME=`awk -F':' '{print $1}' /etc/passwd|grep -wx $name 2>/dev/null|wc -l`
 if [ -z "$NAME" ];then
 echo "用户名不能为空,请重新输入。"
 continue
 elif [ $NAME -eq 1 ];then
 echo "用户名已存在,请重新输入。"
 continue
 fi
useradd $name
break
done
#create password
while true
do
 read -p "为 $name 创建一个密码:" pass1
 if [ -z "$pass1" ];then
 echo "密码不能为空,请重新输入。"
 continue
 fi
 read -p "请再次输入密码:" pass2
 if [ "$pass1" != "$pass2" ];then
 echo "两次密码输入不相同,请重新输入。"
 continue
 fi
echo "$pass2" |passwd --stdin $name
break
done
sleep 1
#add visudo
echo "#####add visudo#####"
SUDO=`grep -w "$name" /etc/sudoers |wc -l`
if [ $SUDO -eq 0 ];then
 echo "$name ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
 echo '#tail -1 /etc/sudoers'
 grep -w "$name" /etc/sudoers
 sleep 1
fi
echo "创建用户$name并将其加入visudo完成" 
echo "================================================="
echo ""
sleep 2

上一篇
下一篇