Shell编程——case语句与循环语句(3)
admin
2023-03-06 11:03:17
0

case多分支语句

case语句的结构
针对变量的不同取值,分别执行不同的命令序列

Shell编程——case语句与循环语句(3)

实例1

 击键类型识别
   提示用户输入一个字符
   判断出该字符是字母,数字或者其他字符
#!/bin/bash
read -p "请输入一个字符:" key
case $key in
[a-z] | [A-Z])
    echo "你输入的是字母"
     ;;
[0-9])
    echo "你输入的是数字"
    ;;
*)
    echo "你输入的是特殊字符"
esac

Shell编程——case语句与循环语句(3)

实例2

输入成绩,查看成绩等级

#!/bin/bash
read -p "请输入你的成绩:" num
case $num in
[8-9][0-9]|100)
    echo "优秀"
    ;;
7[0-9])
    echo "良好"
    ;;
6[0-9])
    echo "合格"
    ;;
[0-9]|[1-5][0-9])
    echo "不合格"
    ;;
*)
    echo "您输入有误"
esac

Shell编程——case语句与循环语句(3)

for语句的结构

读取不同的变量值,用来逐个执行同一组命令

Shell编程——case语句与循环语句(3)

实例1

 批量添加用户
 将用户名存放在name.txt文件中,每行一个
 初始密码均设为123456
 验证脚本

Shell编程——case语句与循环语句(3)

#!/bin/bash
TMP=$(cat /root/name.txt)
for USER in $TMP
do
        echo "用户是$USER"
        useradd $USER 
        echo "123456" | passwd --stdin $USER > /dev/null
done

Shell编程——case语句与循环语句(3)

实例2

 根据IP地质检查主机状态
 IP地质存放在demo04.txt文件中,每行一个
 使用ping命令检测各主机的连通性

Shell编程——case语句与循环语句(3)

#!/bin/bash
IP=$(cat /root/demo04.txt)
for ip in $IP
do
  ping -c 1  -s 1 -w 3 $ip > /dev/null
 if [ $? -eq 0 ]
 then
   echo "$ip主机存在"
 else
   echo "$ip主机不存在"
 fi
done

Shell编程——case语句与循环语句(3)

while语句的结构

重复测试某个条件,只要条件成立则反复执行

Shell编程——case语句与循环语句(3)

实例1

 批量添加用户
 用户名称以stu开头,按数字顺序进行编号
 一共添加5个用户,即stu1,stu2,stu3...
 初始密码均设为123456
#!/bin/bash
num=1
while [ $num -le 5 ]
do
useradd stu$num
  echo "123456" | passwd --stdin stu$num &> /dev/null
  let num++
done

Shell编程——case语句与循环语句(3)

实例2

 猜商品价格脚本
 通过变量RANDOM获得随机数
 提示用户猜测并记录次数,猜中后退出循环
#!/bin/bash
random=$(expr $RANDOM % 100)
tim=0
while true
do
 read -p "请输入商品的价格:" jia
 let tim++
 if [ $jia -eq $random ]
 then
  echo "恭喜您猜对了"
  echo "您一共猜了$tim"
 exit 0
 elif [ $jia -lt $random ]
 then
  echo "您猜的数小了"
 else
  echo "您猜的数大了"
 fi
done

Shell编程——case语句与循环语句(3)

综合实例

进入五家商店分别购买商品,最后查看消费总额
#!/bin/bash
i=1
sum=0
while [ $i -le 5 ]
do
  echo "进入第$i家商店"
  read -p "是否进入看看(yes/no)" doing
  while [ $doing = "yes" ]
    do
       echo "1:衣服¥200"
       echo "2:鞋子¥100"
       echo "3:手套¥75"
       echo "4:裤子¥150"
       read -p "请选择需要购买的商品序列:" num
       case $num in
           1)
             echo "衣服购买成功"
             expr $[sum+=200] &> /dev/null
           ;;
           2)
             echo "鞋子购买成功"
             expr $[sum+=100] &> /dev/null
           ;;
           3)
             echo "手套购买成功"
             expr $[sum+=75] &> /dev/null
           ;;
           *)
             echo "裤子购买成功"
             expr $[sum+=150 &> /dev/null
      esac
      read -p "是否继续进行购买(yes/no)" doing

   done
   let i++
   if [ $doing = "no" ]
     then
     continue
   fi
done
   echo "购物总价:$sum"

Shell编程——case语句与循环语句(3)

until语句的结构

重复测试某个条件,只要条件不成立则反复执行

Shell编程——case语句与循环语句(3)

实例1

 计算1-50的和值
 通过循环累计的方式计算1-50的和值
#!/bin/bash
sum=0
i=0
until [ $i -eq 51 ]
do
  let sum+=$i
  let i++
done
echo "总数之和为:$sum"

Shell编程——case语句与循环语句(3)

实例2

 为指定用户发送在线消息
 若用户不在线(未登陆系统),则每5s试一次,直至用户登录后在发送消息
 用户与消息通过为止参数传递给脚本
#!/bin/bash
if [ $# -lt 0 ]
then
  echo "Usage:$0 "
  exit 1
fi
grep "$1" /etc/passwd &> /dev/null
if [ $? -eq 0 ];then :
else
  echo "用户不存在"
fi
until who|grep "$1" > /dev/null
do
 echo "用户不在线"
 sleep 5
done
echo $2 | write $1

Shell编程——case语句与循环语句(3)
Shell编程——case语句与循环语句(3)

谢谢阅读!!!

相关内容

热门资讯

全球科技巨头谷歌入驻广州 5月8日,据广州发布消息,近日全球科技巨头谷歌(Google)正式签订合同,入驻位于天河CBD珠江新...
首届“泉城杯”国际人形机器人全... 济南广电·天下泉城客户端5月8日讯一场跨越国界的智能体育盛宴即将燃爆泉城。2026年首届“泉城杯”国...
切尔诺贝利核禁区发生大火,过火... 新华社基辅5月8日电(记者李东旭)乌克兰国家紧急情况局8日说,切尔诺贝利核禁区发生大火,并受大风天气...
伊朗大使:不接受任何军事威胁下... 据凤凰卫视报道,5月8日,伊朗驻华大使馆召开记者会,大使法兹里在回应近期海湾局势时表示,伊朗日前向美...
国民党痛批赖清德:把司法当东厂... 据凤凰卫视报道,国民党和民众党联手否决了赖清德提名的检察机构负责人选,但赖清德并未重新提名新人选,而...
男子给婚外情对象转账22万余元... 男子谭某和妻子梁某在1991年结婚,婚后育有两女。2020年时,谭某结识女子贺某后,二人发生婚外情关...
钧正平:为什么说东京审判还没有... 今年是东京审判开庭80周年,我们在此回顾三个故事。东京审判现场。被偷走的骨灰1948年12月23日午...
国乒男团3比0韩国,晋级世乒赛... 北京时间5月8日,2026伦敦世乒赛男团1/4决赛,国乒男团以总比分3比0战胜韩国队,晋级半决赛。本...
美国公布首批UFO相关政府文件... 美国国防部5月8日公布了首批“与外星人、地外生命、不明空中现象(UAP)以及不明飞行物(UFO)相关...
外交部:日本军国主义侵略罪行罄... 在东京审判开庭80周年之际,《远东国际军事法庭庭审记录·全译本》日前在中国首发。外交部发言人林剑5月...