一、格式
有限循环
# /bin/bash
i=0
while [ $i -le 10 ]
do
echo $i
i=$[$i+1]
done
死循环(条件永远成立)
# /bin/bash
i=0
while [ $i -ge 0 ]
do
echo $i
i=$[$i+1]
done
---
while : 等于 while true
在死循环中通过其他机制中断循环
# /bin/bash
i=0
while [ $i -ge 0 ]
do
if [ $i -lt 1000 ];then
echo $i
i=$[$i+1]
else
exit
fi
done
举例1:点名脚本
# vim user.txt
zhangsan
lisi
wangwu
tom
jerry
boss
ikun
---
#! /bin/bash
#read -p "随机抽取几位同学:" name
i=0
n=""
while [ $i -lt $1 ]
do
num=$[$RANDOM%18+1]
n1=`head -n $num /root/user.txt | tail -1`
echo $n | grep -w $n1 &> /dev/null
if [ $? -ne 0 ];then
n="$n $n1"
let i++
fi
done
echo "$n"
举例2:双色球
#! /bin/bash
i=0
red=""
while [ $i -lt 6 ]
do
n1=$[$RANDOM%33+1]
echo $red | grep -w $n1 &> /dev/null
if [ $? -ne 0 ];then
red="$red $n1"
let i++
fi
done
echo "红球:$red"
blue=$[$RANDOM%16+1]
echo "蓝球: $blue"
#带颜色输出
echo -e "\033[31m红球:$red \033[0m"
blue=$[$RANDOM%16+1]
echo -e "\033[34m蓝球: $blue\033[0m"
---
shell脚本中echo显示内容带颜色显示,需要使用到-e参数
格式1:echo -e “\033[背景颜色;字体颜色m 要输出的字符 \033[0m”
格式2:echo -e “\e[背景颜色;字体颜色m 要输出的字符 \e[0m”
echo -e “\033[30m 黑色字 \033[0m”
echo -e “\033[31m 红色字 \033[0m”
echo -e “\033[32m 绿色字 \033[0m”
echo -e “\033[33m 黄色字 \033[0m”
echo -e “\033[34m 蓝色字 \033[0m”
echo -e “\033[35m 紫色字 \033[0m”
echo -e “\033[36m 天蓝字 \033[0m”
echo -e “\033[37m 白色字 \033[0m”
echo -e “\033[40;37m 黑底白字 \033[0m”
echo -e “\033[41;37m 红底白字 \033[0m”
echo -e “\033[42;37m 绿底白字 \033[0m”
echo -e “\033[43;37m 黄底白字 \033[0m”
echo -e “\033[44;37m 蓝底白字 \033[0m”
echo -e “\033[45;37m 紫底白字 \033[0m”
echo -e “\033[46;37m 天蓝底白字 \033[0m”
echo -e “\033[47;30m 白底黑字 \033[0m”
控制选项:
\033[0m:关闭所有属性
\033[1m:高亮显示,加粗
\033[5m:闪烁
二、while read line
结构:一行一行读取文件内容
while read line
do
echo $line
done < /root/user_list
举例:
# vim list.txt
tom 123
jerry 456
zhangsan 123456
lisi 123
wangwu 123
批量创建用户,并设置密码
#!/bin/bash
while read line
do
username=`echo $line | awk -F" " '{print $1}'`
password=`echo $line | awk -F" " '{print $2}'`
useradd $username &> /dev/null
echo $password | passwd --stdin $username &>/dev/null
if [ $? -eq 0 ];then
echo -e "$username 用户已创建,已设置密码\n"
fi
done < /root/list.txt
三、until循环
until 条件
do
循环体
done
与whlie循环相反,当后面的条件表达式,为假的时候进行循环,当他为真了就停止循环了