本章目录
一:case语句的实例
1.1:创建一个判断输入类型的脚本
- 提示用户输入一个字符
- 判断出该字符是字母,数字或者其他字符
脚本如下:
[root@localhost]# vim 123.sh
#!/bin/bash #脚本的环境
read -p "请输入一个字符:" a
case "$a" in
[0-9])
echo "你输入的是数字"
;;
[a-z]|[A-Z])
echo "你输入的是字母"
;;
*)
echo "你输入的是符号"
esac
~
[root@localhost]# chmod +x 123.sh #赋予它执行的权限
[root@localhost]# ./123.sh
请输入一个字符:5
你输入的是数字
[root@localhost]# ./123.sh
请输入一个字符:M
你输入的是字母
[root@localhost]# ./123.sh
请输入一个字符:$
你输入的是符号
二:for语句的实例
2.1:批量添加用户
- 根据姓名列表批量添加用户
脚本如下:
[root@localhost]# vim a.txt
zhangsan #里面添加三个用户
lisi
wangwu
[root@localhost]# vim uaddfor.sh
#!/bin/bash
ulist=$(cat /root/a.txt) #调用刚刚创建文本的内容
for uname in $ulist
do
useradd $uname #添加用户名
echo "123456" | passwd --stdin $uname &>/dev/null #将输入的密码存放在一个空目录当中
echo "$uname添加成功"
done
[root@localhost]# chmod +x uaddfor.sh #赋予它执行权限
[root@localhost]# ./useradd.sh #执行脚本
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
zhangsan添加成功
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
lisi添加成功
Changing password for user wangwu.
passwd: all authentication tokens updated successfully.
wangwu添加成功
2.2:批量删除用户
- 在批量添加的脚本上做修改!
脚本如下:
[root@localhost]# vim udelfor.sh
#!/bin/bash
Lists=$(cat /root/a.txt)
for uname in $ulist
do
userdel -r $uname &>/dev/null -r:删除家目录 /dev/null:空目录
echo "$uname删除成功"
done
[root@localhost]# ./useradd.sh
zhangsan删除成功
lisi删除成功
wangwu删除成功
[root@localhost]id zhangsan
id:zhangsan:无此用户
2.3:根据IP地址列表检查主机状态
- 检测IP地址192.168.10.0-192.168.10.10
- 使用ping命令检测各主机的连通性
脚本如下:
#!/bin/bash
for ((i=1;i<=10;i++))
do
ping -c 3 -i 0.2 -W 3 "192.168.197.$i" &> /dev/null
if [ $? -eq 0 ]
then
echo "Host 192.168.10.$i is up"
else
echo "Host 192.168.10.$i is down"
fi
done
[root@localhost opt]# ./ipchk.sh
Host 192.168.10.1 is up
Host 192.168.10.2 is up
Host 192.168.10.3 is down
Host 192.168.10.4 is down
Host 192.168.10.5 is down
Host 192.168.10.6 is down
Host 192.168.10.7 is down
Host 192.168.10.8 is down
Host 192.168.10.9 is down
Host 192.168.10.10 is down
三:while语句的实例
3.1:使用while循环语句输出1-10数字
脚本如下:
#!/bin/bash
i=0
while [ $i -le 10 ]
do
echo "$i"
let i++
done
[root@localhost]# . cc.sh
0
1
2
3
4
5
6
7
8
9
10
3.2:使用while批量添加用户
- 用户名称以tom开头,按数字顺序进行编号
- 一共添加10个用户,即tom1 tom2…tom10
#!/bin/bash
i=0
while [ $i -le 10 ] #变量值小于等于10时执行,le表示小于或等于
do
let i++
useradd stu$i
echo "123456" | passwd --stdin tom$i &> /dev/null
echo "tom$i添加成功"
done
echo "已全部添加完毕"
[root@localhost]# ./useradd.sh
stu1添加成功
stu2添加成功
stu3添加成功
stu4添加成功
stu5添加成功
stu6添加成功
stu7添加成功
stu8添加成功
stu9添加成功
stu10添加成功
已全部添加完毕
3.3:猜商品价格游戏
- 环境变量RANDOM可获得一个小于2的16次方的随机数值
- 提示用户猜测并记录次数,猜中后退出循环
#!/bin/bash
m=`expr $RANDOM % 1000`
i=0
echo "商品的实际价格为0-999之间,猜猜看是多少?"
read -p "请输入你猜测的价格数目:" num
while [ $num -le 999 ] && [ $num -ge 1 ]
do
let i++
if [ $num -eq $m ]
then
echo "恭喜你答对了,实际价格是$m"
echo "你一共猜测了$i 次"
exit 0
elif [ $num -lt $m ]
then
echo "太低了"
read -p "请输入你猜测的价格数目:" num
else
echo "太高了"
read -p "请输入你猜测的价格数目:" num
fi
done
[root@localhost]# ./zz.sh
商品的实际价格为0-999之间,猜猜看是多少?
请输入你猜测的价格数目 : 463
太高了 !
请输入你猜测的价格数目 : 319
太低了 !
请输入你猜测的价格数目 : 400
太高了 !
请输入你猜测的价格数目 : 380
太高了 !
请输入你猜测的价格数目 : 345
恭喜你答对了,实际价格是 345
你一共猜测了5次
四:until语句应用实例
4.1:计算1–100的和
- 通过循环累加的方式计算1–100的和
#!/bin/bash
i=1
e=0
until [ $i -eq 101 ]
do
let S+=$i
let i++
done
echo "$e"
[root@localhost]# ./leijia.sh
5050