case多分支语句
循环语句:
1.for循环语句
2.while循环语句
3.until循环语句
Shell函数
Shell数组
case语句的结构:
针对变量的不同取值,分别执行不同的命令序列
半个)匹配模式
;;双分号结束执行
*号表示默认语句
默认语句结束没有双分号
结尾把case倒过来写,表示一个结构的结束
先stop
中间输入sleep休眠5秒钟(需要有休眠时间)
再start
case语句示例:
Demo1:
输入字符,判断是属于字符,数字
#!/bin/bash
read -p "请输入一个字符:" key
case $key in
[a-z]|[A-Z])
echo "你输入的是字母"
;;
[0-9])
echo "你输入的是数字"
;;
*)
echo "你输入的特殊符号"
esac
[root@localhost opt]# chmod +x demo1.sh
[root@localhost opt]# ./demo1.sh
请输入一个字符:i
你输入的是字母
Demo2:
成绩测试实验:
#!/bin/bash
read -p "请输入成绩(0-100):" score
case $score in
[8-9][0-9]|100)
echo "成绩优秀"
;;
7[0-9])
echo "成绩良好"
;;
6[0~9])
echo "成绩合格"
;;
[0~9]|[1-5][0-9])
echo "您的成绩不合格"
;;
*)
echo "您输入的成绩无效"
esac
[root@localhost opt]# ./demo1.sh
请输入成绩(0-100):89
成绩优秀
[root@localhost opt]# ./demo1.sh
请输入成绩(0-100):55
您的成绩不合格
[root@localhost opt]# ./demo1.sh
请输入成绩(0-100):77
成绩良好
[root@localhost opt]# ./demo1.sh
请输入成绩(0-100):110
您输入的成绩无效
for语句的结构:
读取不同的变量值,用来逐个执行同一组命令
使用场景:
1.指定次数循环
2.遍历循环(集合的范围,挨个执行)(增强循环,foreach)
Demo3:
#!/bin/bash
for ((i=1;i<=10;i++))
do
echo $i
done
vim name.txt
zhangsan/lisi/wangwu
#!/bin/bash
TMP=$(cat /opt/name.txt)
for USER in $TMP
do
echo "用户是$USER"
done
[root@localhost opt]# ./demo2.sh
用户是zhangsan
用户是lisi
用户是wangwu
批量添加用户并设置密码:
#!/bin/bash
TMP=$(cat /opt/name.txt)
for USER in $TMP
do
useradd $USER
echo "123456" | passwd --stdin $USER &> /dev/null
echo "用户是$USER"
done
while语句的结构:
Demo4:
批量添加用户:
#!/bin/bash
num=1
while [ $num -le 10 ]
do
echo $num
let num++
done
批量删除用户:
#!/bin/bash
PRE="stu"
num=1
while [ $num -le 20 ]
do
#useradd $PRE$num
#echo "123456"|passwd --stdin $PRE$num &> /dev/null
userdel -r $PRE$num &> /dev/null
let num++
done
~
Demo5:
猜价格游戏
#!/bin/bash
#商品价格
PRICE=$(expr $RANDOM % 1000)
#猜测次数
TIMES=0
echo "猜价格游戏.."
while true
do
read -p " 请输入商品价格(0-999):" num
let TIMES++
if [ $num -eq $PRICE ];then
echo "恭喜猜中了"
echo "总共猜了$TIMES"
exit 0
elif [ $num -gt $PRICE ];then
echo "太高了哦!"
else
echo "太低了哦!"
fi
done