shell编程:循环语句和函数实例(case语句,for循环语句,while循环语句,until循环语句)

一: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值