shell流程控制-case条件判断语句

  • case介绍

  • case语法

  • shell特殊变量



一、case介绍

在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。

特点:根据给予的不同条件执行不同的代码块



  1. 比如你去相亲:你会在脑子里出现以下的预案:
  2. 第一眼看到对方父亲,你应该说:伯父好
  3. 第一眼看到对方母亲,你应该说:伯母好
  4. 第一眼看到对方奶奶,你应该说:奶奶好
  5. 。。。。
  6.  
  7.  
  8. 而这个例子中触发就是你第一眼看到了对方的谁,预案则是叫什么称呼。
  9.  
  10. 再来说一个计算机的相关例子---监控内存使用率
  11. 内存使用率低于80%,脚本输出: 绿色字体的Memory use xx%
  12. 内存使用率大于80%小于90%,脚本输出: 黄色字体的Memory use xx%
  13. 内存使用率大于90%,脚本输出: 红字体的Memory use xx%

二、case语法


  1. 语法:
  2.  
  3. case 变量 in
  4.  
  5. 条件1)
  6. 执行代码块1
  7. ;;
  8. 条件2)
  9. 执行代码块2
  10. ;;
  11. ......
  12. esac
  13.  
  14. 注意:每个代码块执行完毕要以;;结尾代表结束,case结尾要以倒过来写的esac来结束。

案例说明


  1. #!/bin/bash
  2. read -p "NUM: " N
  3.  
  4. case $N in
  5. 1)
  6. echo haha
  7. ;;
  8. 2)
  9. echo hehe
  10. ;;
  11. 3)
  12. echo heihei
  13. ;;
  14. *)
  15. echo bye
  16. ;;
  17. esac
  18.  
  19. 执行输出
  20. [root@www ~]# sh x1
  21. NUM: 1
  22. haha
  23. [root@www ~]# sh x1
  24. NUM: 2
  25. hehe
  26. [root@www ~]# sh x1
  27. NUM: 3
  28. heihei
  29. [root@www ~]# sh x1
  30. NUM: 4
  31. bye

三、shell特殊变量


  1. 特殊参数
  2. 1. $*: 代表所有参数,其间隔为IFS内定参数的第一个字元
  3. 2. $@: 与*星号类同。不同之处在於不参照IFS
  4. 3. $#: 代表参数数量
  5. 4. $: 执行上一个指令的返回值
  6. 5. $-: 最近执行的foreground pipeline的选项参数
  7. 6. $$: 本身的Process ID
  8. 7. $: 执行上一个背景指令的PID
  9. 8. $_: 显示出最後一个执行的命令
  10. 9. $N: shell的第几个外传参数


  • 作者:合十
  • 发表时间:2021年9月4日 03:15
  • 更新时间:2024年11月30日 11:43
  • 所属分类:Shell脚本编程

Comments

该文章还未收到评论,点击下方评论框开始评论吧~