Shell脚本学习(三)

Shell脚本学习(三)

1.case分支语句

1.1case语句的用法

case 变量值 in
模式1)
    命令序列
    ;;
模式2)
    命令序列
    ;;
……………………   //表示按照上面的模板来修改
*)
    默认序列
esac

1.2case语句的注意事项:

写case语句的时候,开头是case,模式处理完后,就要用esac来结束,一一对应,就和if和fi一样。然后,每个模式写完后都要有";;"英文字符来表示这个模式的结束。

2.case语句实例

要求:

1.在0-59分时,不及格

2.在60-74分时,及格

3.在75-84分时,良好

4.在85-100分时,优秀

5.其他区间我们认为输入不合法

vim chengjipanduan.sh
#!/bin/bash
read -p "请输入你的成绩:" score
case "$score" in
[0-9]|[1-5][0-9])
    echo "你的成绩不及格,别灰心,再试一次"
    ;;
6[0-9]|7[0-4])
    echo "你的成绩刚好及格,请继续努力"
    ;;
7[5-9]|8[0-4])
    echo "你的成绩为良好,还得继续努力"
    ;;
8[5-9]|9[0-9]|100)
    echo "你的成绩为优秀,还请努力学习,不要骄傲"
    ;;
*)
    echo "请输入正确的信息"
esac
chmod +x chengjipanduan.sh

测试

[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:59
你的成绩不及格,别灰心,再试一次
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:60
你的成绩刚好及格,请继续努力
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:74
你的成绩刚好及格,请继续努力
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:75
你的成绩为良好,还得继续努力
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:84
你的成绩为良好,还得继续努力
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:85
你的成绩为优秀,还请努力学习,不要骄傲
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:100
你的成绩为优秀,还请努力学习,不要骄傲
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:101
请输入正确的信息
[root@lab opt]# ./chengjipanduan.sh 
请输入你的成绩:-1
请输入正确的信息

ps:模式是可以用正则表达式来执行的

3.for循环结构语句

3.1for循环结构的语法

语法一:

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

语法二:

for ((i=0;i<=10;i++))
do
  命令序列
done

3.2for语句的注意事项:

在写for语句的时候,一定要注意区分语法一和语法二

4.for循环的简单实例

1.用for循环写一个100以内的偶数相加

vim computingoushu.sh
#!/bin/bash
count=0
for ((i=1;i<=100;i++))
  do
      if [ `expr $i % 2`  -eq 0 ]
        then

        let count+=$i
      fi
  done
echo "$count"
chmod +x computingoushu.sh

测试

[root@lab opt]# ./computingoushu.sh 
2550

2.用for循环打印测试192.168.10.0网段的主机在线的信息

vim ceshizhuji.sh
#!/bin/bash
for ((i=0;i<=255;i++))
  do
    ping -c 3 -i 0.2  "192.168.10.$i"  > /dev/null
        if [ $? -eq 0 ]
          then
              echo "192.168.10.$i is up" && echo "192.168.10.$i" >> /opt/available.txt
        fi
  done
chmod +x ceshizhuji.sh

测试

[root@lab opt]# ./ceshizhuji.sh 
192.168.10.1 is up
192.168.10.13 is up
192.168.10.16 is up
192.168.10.18 is up
192.168.10.19 is up
192.168.10.21 is up
192.168.10.23 is up
192.168.10.25 is up
192.168.10.26 is up
192.168.10.27 is up
192.168.10.36 is up
192.168.10.39 is up
192.168.10.40 is up
192.168.10.49 is up
192.168.10.68 is up
192.168.10.69 is up
192.168.10.71 is up
192.168.10.73 is up
192.168.10.87 is up
192.168.10.89 is up
192.168.10.97 is up
192.168.10.99 is up
192.168.10.100 is up
192.168.10.105 is up
192.168.10.106 is up
192.168.10.107 is up
192.168.10.110 is up
192.168.10.114 is up
192.168.10.120 is up
192.168.10.122 is up
192.168.10.124 is up
192.168.10.126 is up
192.168.10.136 is up
192.168.10.138 is up
192.168.10.141 is up
192.168.10.142 is up
192.168.10.146 is up
192.168.10.148 is up
192.168.10.150 is up
192.168.10.155 is up
192.168.10.172 is up
192.168.10.177 is up
192.168.10.180 is up
192.168.10.186 is up
192.168.10.189 is up
192.168.10.193 is up
192.168.10.194 is up
192.168.10.200 is up
[root@lab opt]# cat available.txt 
192.168.10.1
192.168.10.13
192.168.10.16
192.168.10.18
192.168.10.19
192.168.10.21
192.168.10.23
192.168.10.25
192.168.10.26
192.168.10.27
192.168.10.36
192.168.10.39
192.168.10.40
192.168.10.49
192.168.10.68
192.168.10.69
192.168.10.71
192.168.10.73
192.168.10.87
192.168.10.89
192.168.10.97
192.168.10.99
192.168.10.100
192.168.10.105
192.168.10.106
192.168.10.107
192.168.10.110
192.168.10.114
192.168.10.120
192.168.10.122
192.168.10.124
192.168.10.126
192.168.10.136
192.168.10.138
192.168.10.141
192.168.10.142
192.168.10.146
192.168.10.148
192.168.10.150
192.168.10.155
192.168.10.172
192.168.10.177
192.168.10.180
192.168.10.186
192.168.10.189
192.168.10.193
192.168.10.194
192.168.10.200

ps:我们一定要注意格式,不然有时候会报错。

5.while循环

while循环的语法

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

6.while循环的简单实例

打印1到10

vim testwhile.sh
#!/bin/bash
i=1
while [ $i -le 10 ]
  do
      echo "$i"
      let i++
  done
chmod +x testwhile.sh

测试

[root@lab opt]# ./testwhile.sh 
1
2
3
4
5
6
7
8
9
10

7.总结和补充

补充:$RANDOM 随机数

$RANDOM的值为[0-65536] 即2^^16

expr $RANDOM % 100 //100以内的随机正整数包括(0)

continue 本次循环不执行,然后执行下次操作

break 直接退出当前循环

总结:总结一下今天所学的,我们今天主要学习的是case多分支语句,for循环,while循环。case多分支语句适用于确定的几个点,if适用于一个一个的模块,但是当case使用正则的时候,两者都可以。for循环和while循环主要是记住语法套就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值