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