shell编程之case分支语句,for循环语句和while循环语句

case语句

应用场合:某个变量存在多种取值,需要对对其中的每一种取值分别执行不同的命令

case语句的语法结构

case 变量值 in
模式1)
 命令序列1
;;
模式2)
 命令序列2
;;
……
*)
 默认命令序列
esac

在这里插入图片描述

case语句应用实例

#!/bin/bash 
#这是一个判断成绩的脚本
case $1 in
8[0-9]|9[0-9]|100)
echo "成绩优秀"
;;
6[0-9]|7[0-9])
echo "成绩良好"
;;
60)
echo "成绩合格"
;;
*)
echo "成绩不合格"
esac

for循环语句

读取不同的变量值,用来逐个执行同一组命令
应用场合:需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。“取值列表”称为for语句的执行条件

for循环语句的结构

for 变量名in取值列表
do 
  命令序列
down

在这里插入图片描述

for取值列表的表达

用具体的数表达

#/bin/bash 
for a in 1 2 3 4 5
do
echo $a 
done

用范围表达

#/bin/bash 
for a in {1..5}
do
echo $a 
done

用字母表达

#/bin/bash 
for a in a b c d
do
echo hello
done

用序列表达

#/bin/bash 
for a in `seq 5`
do
echo hello
done

带变量表达

#/bin/bash
i=10
for a in `seq $i`
do
echo hello
done

跟位置参数表达

#/bin/bash
for a
do
echo $a
done

在这里插入图片描述

用按变量++或变量 - -变达

#/bin/bash
for ((a=1;a<=4;a++))
do
echo hello
done
#/bin/bash
for ((a=4;a>1;a--))
do
echo hello
done

在文件中写入数值调用

#/bin/bash
for a in `cat /opt/wenjian.text`
do
echo hello
done

for语句应用实例

#/bin/bash
#这是一个求0100偶数和的脚本
a=0
for b in {1..100}
do
a=$[ $a+$b ]
done
echo $a
#/bin/bash
#这是一个打印矩阵星星的脚本
read -p "请输入星星矩阵数: " p
for ((a=1;a<=p;a++))
do
 for ((b=1;b<=p;b++))
 do
 echo -n "* "  
 done
 echo 
done
#/bin/bash
#这是一个创建指定用户的脚本
for name  in  `cat /opt/user.text`
do
 id $name &> /dev/null
 if [ $? -eq 0 ];then
  echo "用户已存在"
  else
  echo "正在创建用户$name用户"
  useradd $name
  echo "正在设定$name的密码"
  echo "123" | passwd --stdin $name &> /dev/null
 fi
done

while语句

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

while循环语句的语法结构

while 条件测试操作
do 
 命令序列
done 

在这里插入图片描述
使用which循环语句时,有两个特殊的条件操作,即 true(真)和 false(假)
使用true作为条件时,命令序列无限执行下去,使用false作为条件,则循环不会执行
以下是两种死循环:

# ! /bin/bash
while true
do
echo hello
done
#! / bin/ bash
whilel :
do
echo hello
done

三种退出循环的方式

(1)break 退出while循环

#/bin/bash
#这是一个猜数字游戏的脚本
a=30
while true
do
read -p "请输入一个数字: " num
if [ $num -eq $a ];then
 echo "你猜对了"
break
 elif [ $num -gt $a ];then
 echo "你猜大了"
 elif [ $num -lt $a ];then
 echo "你猜小了"
fi
done

(2)continue,是以当前变量值继续,不执行下面的操作

#/bin/bash
#这是一个猜数字游戏的脚本
a=1
while [ $a -le 10 ]
do
 echo $a
 if [ $a -ge 5 ];then  //当a=5时会以5继续执行当前变量值,不执行a++的操作
continue
fi
let  a++
done

(3)exit,退出脚本,可以自定义返回码

#/bin/bash
a=1
while [ $a -le 10 ]
do
 echo $a
 if [ $a -ge 5 ];then
exit 2     ?//此时 $?的值为2
 fi
let  a++
done

while语句应用实例

#/bin/bash
#这是一个求0-100偶数和的脚本
a=0
b=1
while [ $b -le 100 ]
do
  if [[ $b%2 -eq 0 ]];then
 let a=$a+$b
  fi
let b++
done
echo $a

until语句的结构

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

在这里插入图片描述

until语句的死循环

#/bin/bash
until false 
do
echo 
done

until语句应用实例

#/bin/bash
until [ 1 -lt 1 ]
do
echo 11
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值