1. 流程控制语句if基本概述

01. 单分支结构

  1. if [ 如果你有房 ];then 我就嫁给你fi
  2. #示例
  3. [root@qiudao ~/shell]# cat if-1.sh#!/usr/bin/bashif which ls;thenecho "ok"fi
  4. #执行脚本
  5. [root@qiudao ~/shell]# sh if-1.sh/usr/bin/lsok

02. 双分支结构

  1. if [ 如果你有房 ];then 我就嫁给你else 再见fi
  2. #示例
  3. [root@qiudao ~/shell]# cat if-2.sh#!/usr/bin/bashif [ $# -ne 1 ];then echo "请输入一个参数" exitfiif grep "$1" /etc/passwd;thenecho "ok!"elseecho "error!"fi
  4. #执行脚本
  5. [root@qiudao ~/shell]# sh if-2.sh rootroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinok!

03. 多分支结构

if [ 如果你有钱 ];then 我就嫁给你elif [ 你有房 ];then 我就嫁给你elif [ 你很努力能吃苦 ];then 我们试试else 再见fi

  1. #示例
  2. 判断用户是否存在
  3. #脚本
  4. read -p "please input your user: " user
  5. #判断
  6. if id $user &>/dev/null;then
  7. if ls /home/$user &>/dev/null;then
  8. echo "还用户 $user 存在该系统"
  9. echo "该用户存在家目录"
  10. else
  11. echo "还用户 $user 存在该系统"
  12. echo "该用户不存在家目录"
  13. fi
  14. else
  15. if ls /home/$user &>/dev/null;then
  16. echo "还用户 $user 不存在该系统"
  17. echo "该用户存在家目录"
  18. else
  19. echo "还用户 $user 不存在该系统"
  20. echo "该用户不存在家目录"
  21. fi
  22. fi

2. 流程控制语句if文件比较

01. if语句中的文件比较

选项 说明 示例
-e 如果文件或目录存在则为真 [ -e file ]
-s 如果文件存在且至少有一个字符则为真 [ -s file ]
-d 如果文件存在且为目录则为真 [ -d file ]
-f 如果文件存在且为普通文件则为真 [ -f file ]
-r 如果文件存在且可读则为真 [ -r file ]
-w 如果文件存在且可写则为真 [ -w file ]
-x 如果文件存在且可执行则为真 [ -x file ]

02. 语法示例

  1. #语法示例一:
  2. [root@qiudao ~/shell]# cat if-4.sh
  3. if [ -e /etc/hosts ];then
  4.     echo "ok"
  5. else
  6.     echo "err"
  7. fi
  8. #执行脚本
  9. [root@qiudao ~/shell]# sh if-4.sh
  10. ok
  11. #语法示例二:
  12. [root@qiudao ~/shell]# cat if-4.sh
  13. if [ -e /etc/hostss ];then
  14.     echo "ok"
  15. else
  16.     echo "err"
  17. fi
  18. #执行脚本
  19. [root@qiudao ~/shell]# sh if-4.sh
  20. err
  21. #常用测试
  22. [root@qiudao ~/shell]# [ -f /etc/hosts ] && echo $?
  23. 0
  24. [root@qiudao ~/shell]# [ -f /etc/hostss ] && echo $?
  25. [root@qiudao ~/shell]# [ ! -f /etc/hosts ] || echo $

判断文件是否存在,返回方式

  1. [root@qiudao ~/shell]# [ -f /etc/hosts ] && echo "文件存在" || echo "文件不存在"
  2. 文件存在
  3. [root@qiudao ~/shell]# [ -f /etc/hosts1 ] && echo "文件存在" || echo "文件不存在"
  4. 文件不存在
  5. [root@qiudao ~/shell]# [ -d /tmp ] && echo "目录存在" || echo "目录不存在"
  6. 目录存在
  7. [root@qiudao ~/shell]# [ -d /tmp1 ] && echo "目录存在" || echo "目录不存在"
  8. 目录不存在

使用变量的方法进行判断

  1. [root@qiudao ~/shell]# dir=/etc1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir目录不存在"
  2. /etc1/目录不存在
  3. **03. 文件比较场景实践,备份数据库**
  4. #1.备份mysql,手动输入你需要备份的库名称
  5. 1)提示用户手动输入库名称:read
  6. 2)如果用户输入数据库名称,则执行mysqldump命令备份
  7. 3)备份到哪,/backup/mysq
  8. #示例脚本一:
  9. [root@qiudao ~/shell]# cat mysql_backup1.sh
  10. #!/usr/bin/bash
  11. DestPath=/backup/mysql
  12. M_User=root
  13. M_Pass=123.com
  14. [ -d $DestPath ] || mkdir -p $DestPath
  15. read -p "请输入你要备份的数据库名称: " db
  16. /usr/bin/mysqldump -u$M_User -p$M_Pass --single-transaction -R -B $db > $DestPath/${db}_$(date +%F).sql
  17. if [ $? -eq 0 ];then
  18.     echo "------------------"
  19.     echo "$db 数据库备份成功"
  20.     echo "------------------"
  21. fi
  22. #执行脚本
  23. [root@qiudao ~/shell]# sh mysql_backup1.sh

请输入你要备份的数据库名称: wordpress

wordpress 数据库备份成功

  1. #示例脚本二:
  2. [root@qiudao ~/shell]# cat mysql_backup2.sh
  3. #!/usr/bin/bash
  4. DestPath=/backup/mysql
  5. #M_User=root
  6. #M_Pass=123.com
  7. [ -d $DestPath ] || mkdir -p $DestPath
  8. read -p "请输入你要备份的数据库名称: " db
  9. read -p "请输入你要备份的数据库用户: " M_User
  10. read -p "请输入你要备份的数据库密码: " M_Pass
  11. /usr/bin/mysqldump -u$M_User -p$M_Pass --single-transaction -R -B $db > $DestPath/${db}_$(date +%F).sql
  12. if [ $? -eq 0 ];then
  13.     echo "------------------"
  14.     echo "$db 数据库备份成功"
  15.     echo "------------------"
  16. fi
  17. #执行脚本
  18. [root@qiudao ~/shell]# sh mysql_backup2.sh
  19. 请输入你要备份的数据库名称: wordpress
  20. 请输入你要备份的数据库用户: root

请输入你要备份的数据库密码: 123.com

wordpress 数据库备份成功

3. 流程控制语句if整数比较

01. 数值比较[整数1 操作符 整数2 ]

选项 说明 示例
-eq 等于则条件为真 [ 1 -eq 10 ]
-ne 不等于则条件为真 [ 1 -ne 10 ]
-gt 大于则条件为真 [ 1 -gt 10 ]
-lt 小于则条件为真 [ 1 -lt 10 ]
-ge 大于等于则条件为真 [ 1 -ge 10 ]
-le 小于等于则条件为真 [ 1 -le 10 ]
  1. 01. 语法示例**
  2. #等于
  3. [root@qiudao ~/shell]# [ 1 -eq 2 ] && echo "成立" || echo "不成立"
  4. 不成立
  5. [root@qiudao ~/shell]# [ 1 -eq 1 ] && echo "成立" || echo "不成立"
  6. 成立
  7. #大于等于
  8. [root@qiudao ~/shell]# [ 10 -ge 1 ] && echo "成立" || echo "不成立"
  9. 成立
  10. [root@qiudao ~/shell]# [ 10 -ge 11 ] && echo "成立" || echo "不成立"
  11. 不成立
  12. #小于
  13. [root@qiudao ~/shell]# [ 10 -lt 11 ] && echo "成立" || echo "不成立"
  14. 成立
  15. [root@qiudao ~/shell]# [ 10 -lt 9 ] && echo "成立" || echo "不成立"
  16. 不成立
  17. #大于
  18. [root@qiudao ~/shell]# [ 10 -gt 9 ] && echo "成立" || echo "不成立"
  19. 成立
  20. [root@qiudao ~/shell]# [ 10 -gt 11 ] && echo "成立" || echo "不成立"
  21. 不成立
  22. #小于
  23. [root@qiudao ~/shell]# [ 10 -le 11 ] && echo "成立" || echo "不成立"
  24. 成立
  25. [root@qiudao ~/shell]# [ 10 -le 9 ] && echo "成立" || echo "不成立"
  26. 不成立
  27. #不等于
  28. [root@qiudao ~/shell]# [ 10 -ne 11 ] && echo "成立" || echo "不成立"
  29. 成立
  30. [root@qiudao ~/shell]# [ 10 -ne 10 ] && echo "成立" || echo "不成立"
  31. 不成立

02. 场景实践一:编写一个脚本,检测服务是否运行

1)如何判断我们服务是否是运行 systemctl status sshd

2)判断前者命令执行是否成功,成功则输出运行,失败则输出程序没有运行

  1. #示例脚本如下:
  2. [root@qiudao ~/shell]# cat systemctl.sh
  3. #!/usr/bin/bash
  4. if [ $# -ne 1 ];then
  5.     echo "请输入一个服务名称,示例 sh $0 [sshd|httpd|nginx|....]"
  6.     exit
  7. fi
  8. systemctl status "$1" &>/dev/null
  9. rc=$?
  10. if [ $rc -eq 0 ];then
  11.     echo "$1 服务正在运行"
  12. elif [ $rc -eq 4 ];then
  13.     echo "$1 没有这个服务"
  14. else
  15.     echo "$1 服务没有运行"
  16. fi
  17. #执行脚本
  18. [root@qiudao ~/shell]# sh systemctl.sh
  19. 请输入一个服务名称,示例 sh systemctl.sh [sshd|httpd|nginx|....]
  20. [root@qiudao ~/shell]# sh systemctl.sh sshd
  21. sshd 服务正在运行
  22. [root@qiudao ~/shell]# sh systemctl.sh ssh
  23. ssh 没有这个服务
  24. [root@qiudao ~/shell]# sh systemctl.sh firewalld
  25. firewalld 服务没有运行

03. 场景实践二:查看磁盘/分区当前使用状态,如果使用率超过80%则报警发邮件

1)怎么查看磁盘使用率  

2)怎么提取使用率

3)判断,整数

  1. #示例脚本如下:
  2. [root@qiudao ~/shell]# cat disk_use.sh
  3. #!/usr/bin/bash
  4. disk_use=$(df -h|grep "/$"|awk '{print $(NF-1)}')
  5. if [ ${disk_use/\%/} -ge 80 ];then
  6.     echo "你的磁盘使用率过高... ${disk_use}" /bin/false
  7. else
  8.     echo "你的磁盘使用率正常... ${disk_use}" /bin/true
  9. fi
  10. #执行脚本
  11. [root@qiudao ~/shell]# sh disk_use.sh
  12. 你的磁盘使用率正常... 6%

04. 场景实践三:条件测试,创建用户

  1. #示例脚本
  2. [root@qiudao ~/shell]# cat user.sh
  3. #!/usr/bin/bash
  4. read -p "Please input a username: " user
  5. id $user &>/dev/null;
  6. if [ $? -eq 0 ]; then
  7.     echo "user $user already exists"
  8. else
  9.     useradd $user
  10.     if [ $? -eq 0 ];then
  11.         echo "$user is created."
  12.     fi
  13. fi
  14. #执行脚本
  15. [root@qiudao ~/shell]# sh user.sh
  16. Please input a username: user01
  17. user01 is created.
  18. [root@qiudao ~/shell]# sh user.sh
  19. Please input a username: user01
  20. user user01 already exists

05. 场景实践四:函数库使用,判断url地址是否能通

  1. [root@qiudao ~/shell]## cat ping.sh
  2. [ -f /etc/init.d/functions ] && . /etc/init.d/functions
  3. read -p "请输入一个网址: " url
  4. ping -c 1 -W 1 $url &>/dev/null
  5. rc=$?
  6. if [ $rc -eq 0 ];then
  7. action "ping $url is" /bin/true
  8. else
  9. action "ping $url is" /bin/false
  10. fi

4. 流程控制语句if字符比较

01. if字符比较

选项 说明 示例
== 等于则条件为真 [ "$a" == "$b" ]
!= 不相等则条件为真 [ "$a" != "$b" ]
-z 字符串的长度为零则为真 [ -z "$a" ]
-n 字符串的长度不为零则为真 [ -n "$a" ]

02. 字符串比对,必须加双引号

  1. #语法示例:
  2. [root@qiudao ~/shell]# [ "$USER" == "root" ] && echo $?
  3. 0
  4. [root@qiudao ~/shell]# [ "$USER" == "roo" ] && echo $?
  5. [root@qiudao ~/shell]# [ "$USER" == "roo" ] || echo $?
  6. 1
  7. [root@qiudao ~/shell]# [ "$USER" != "root" ] && echo $?
  8. [root@qiudao ~/shell]# [ "$USER" != "roo" ] && echo $?
  9. 0
  10. #字符串长度为0
  11. [root@qiudao ~]# AAA=""
  12. [root@qiudao ~]# echo $AAA
  13. [root@qiudao ~]# echo ${#AAA}
  14. 0
  15. [root@qiudao ~]# [ -z "$AAA" ] && echo $?
  16. 0
  17. #字符串长度不为0
  18. [root@qiudao ~]# BBB=1
  19. [root@qiudao ~]# [ -n "$BBB" ] && echo $?
  20. 0
  21. #脚本示例:
  22. [root@qiudao ~/shell]# cat if-9.sh
  23. #!/bin/bash
  24. read -p "请输入[yes|no]:" tt
  25. if [ "$tt" == "yes" ];then
  26.     echo "ok"
  27. fi
  28. #执行脚本
  29. [root@qiudao ~/shell]# sh if-9.sh
  30. 请输入[yes|no]:yes
  31. ok
  32. [root@qiudao ~/shell]# sh if-9.sh
  33. 请输入[yes|no]:no

03. 多整数比对条件

  1. #-a 并且,-o 或者
  2. [root@qiudao ~]# [ 1 -lt 2 -a 5 -gt 10 ] ;echo $?1[root@qiudao ~]# [ 1 -lt 2 -o 5 -gt 10 ] ;echo $?0
  3. #正则比对会用到[[]],|| 或者,&& 并且
  4. [root@qiudao ~]# [[ 1 -lt 2 || 5 -gt 10 ]] ;echo $?
  5. 0
  6. [root@qiudao ~]# [[ 3 -lt 2 || 5 -gt 10 ]] ;echo $?
  7. 1
  8. [root@qiudao ~]# [[ 3 -lt 2 || 5 -gt 2 ]] ;echo $?
  9. 0
  10. [root@qiudao ~]# [[ 1 -lt 2 && 5 -gt 10 ]] ;echo $?
  11. 1
  12. [root@qiudao ~]# [[ 3 -lt 2 && 5 -gt 10 ]] ;echo

04. 场景实践:根据学生录入的成绩判断,学生的优劣

  1. 1-59 补考,60-80 合格,80-100 优秀
  2. 1read读入学生输入的分数
  3. 2)比较分数,看否和哪一个条件
  4. #示例脚本一:单条件
  5. [root@qiudao ~/shell]# cat if-6.sh
  6. read -p "请输入你的分数: " fs
  7. if [ $fs -lt 60 ];then
  8.     echo "补考"
  9. elif [ $fs -gt 100 ];then
  10.     echo "顽皮"
  11. elif [ $fs -ge 80 ];then
  12.     echo "优秀"
  13. elif [ $fs -ge 60 ];then
  14.     echo "合格"
  15. fi
  16. #执行脚本
  17. [root@qiudao ~/shell]# sh if-6.sh
  18. 请输入你的分数: 59
  19. 补考
  20. [root@qiudao ~/shell]# sh if-6.sh
  21. 请输入你的分数: 60
  22. 合格
  23. [root@qiudao ~/shell]# sh if-6.sh
  24. 请输入你的分数: 80
  25. 优秀
  26. [root@qiudao ~/shell]# sh if-6.sh
  27. 请输入你的分数: 101
  28. 顽皮
  29. #示例脚本二:多条件
  30. [root@qiudao ~/shell]# cat if-7.sh
  31. read -p "请输入你的分数: " fs
  32. if [ $fs -gt 0 -a $fs -lt 60 ];then
  33.     echo "补考"
  34. elif [ $fs -ge 60 -a $fs -lt 80 ];then
  35.     echo "合格"
  36. elif [ $fs -ge 80 -a $fs -le 100 ];then
  37.     echo "优秀"
  38. else
  39.     echo "顽皮"
  40. fi
  41. #执行脚本
  42. [root@qiudao ~/shell]# sh if-7.sh
  43. 请输入你的分数: 4
  44. 补考
  45. [root@qiudao ~/shell]# sh if-7.sh
  46. 请输入你的分数: 60
  47. 合格
  48. [root@qiudao ~/shell]# sh if-7.sh
  49. 请输入你的分数: 89
  50. 优秀
  51. [root@qiudao ~/shell]# sh if-7.sh
  52. 请输入你的分数: 101
  53. 顽皮
  54. [root@qiudao ~/shell]# sh if-7.sh
  55. 请输入你的分数: -9
  56. 顽皮
  57. [root@qiudao ~/shell]# sh if-7.sh
  58. 请输入你的分数: lkhdjf
  59. if-7.sh: line 2: [: lkhdjf: integer expression expected
  60. if-7.sh: line 4: [: lkhdjf: integer expression expected
  61. if-7.sh: line 6: [: lkhdjf: integer expression expected
  62. 顽皮
  63. #示例脚本三:条件判断
  64. [root@qiudao ~/shell]# cat if-8.sh
  65. read -p "请输入你的分数: " fs
  66. #判断数字
  67. expr $fs + 1 &>/dev/null
  68. if [ $? -ne 0 ];then
  69.     echo "请输入数字。" && exit
  70. fi
  71. #判断是否为空值
  72. if [ -z $fs ];then
  73.     echo "不要尝试直接回车,不支持" && exit
  74. fi
  75. #判断成绩
  76. if [ $fs -gt 0 -a $fs -lt 60 ];then
  77.     echo "补考"
  78. elif [ $fs -ge 60 -a $fs -lt 80 ];then
  79.     echo "合格"
  80. elif [ $fs -ge 80 -a $fs -le 100 ];then
  81.     echo "优秀"
  82. else
  83.     echo "顽皮"
  84. fi
  85. #执行脚本
  86. [root@qiudao ~/shell]# sh if-8.sh
  87. 请输入你的分数: tt
  88. 请输入数字。
  89. [root@qiudao ~/shell]# sh if-8.sh
  90. 请输入你的分数:
  91. 不要尝试直接回车,不支持
  92. [root@qiudao ~/shell]# sh if-8.sh
  93. 请输入你的分数: 88
  94. 优秀

5. 流程控制语句if正则比较

  1. 01. 正则比对示例**
  2. #单括号无法使用正则语法
  3. [root@qiudao ~]# [ "$USER" =~ ^r ];echo $?
  4. -bash: [: =~: binary operator expected
  5. 2
  6. #使用双[]才可以
  7. [root@qiudao ~]# [[ "$USER" =~ ^r ]];echo $?
  8. 0
  9. #判断变量是否为数字
  10. [root@qiudao ~]# num=123
  11. [root@qiudao ~]# [[ "$num" =~ ^[0-9]+$ ]];echo $?
  12. 0
  13. [root@qiudao ~]# num=1

02. 示例一:判断用户输入的是否为整数

  1. #示例脚本:
  2. [root@qiudao ~/shell]# cat if-10.sh
  3. #!/bin/bashread -p "请输入一个整数:" num
  4. if [[ ! "$num" =~ ^[0-9]+$ ]];then
  5. echo "你输入的不是整数,程序退出!!!"
  6. exit
  7. fi
  8. echo "你输入的整数是 $num "
  9. \#执行脚本:
  10. [root@qiudao ~/shell]# sh if-10.sh
  11. 请输入一个整数:aa
  12. 你输入的不是整数,程序退出!!!
  13. [root@qiudao ~/shell]# sh if-10.sh
  14. 请输入一个整数:89
  15. 你输入的整数是 89
  16. [root@qiudao ~/shell]# sh if-10.sh
  17. 请输入一个整数:-4
  18. 你输入的不是整数,程序退出!!!
  19. [root@qiudao ~/shell]# sh if-10.sh
  20. 请输入一个整数:0.6
  21. 你输入的不是整数,程序退出!!!

03. 示例二:写一个创建用户的脚本,需要输入创建用户的前缀,比如oldboy,以及后缀。比如123。

  1. #示例脚本:
  2. [root@qiudao ~/shell]# cat if-11.sh
  3. #!/usr/bin/bash
  4. read -p "请输入用户的前缀: " qz
  5. if [[ ! $qz =~ ^[a-Z]+$ ]];then
  6.     echo "你输入的不是english...."
  7.     exit
  8. fi
  9. read -p "请输入创建用户的后缀: " hz
  10. if [[ $hz =~ ^[0-9]+$ ]];then
  11.     user=${qz}${hz}
  12.     id $user &>/dev/null
  13.     if [ $? -eq 0 ];then
  14.         echo "用户已经存在 $user"
  15.     else
  16.         useradd $user
  17.         echo "用户创建成功 $user"
  18.     fi
  19. else
  20. echo "你输入的不是数字...."
  21. exit
  22. fi
  23. #执行脚本
  24. [root@qiudao ~/shell]# sh if-11.sh
  25. 请输入用户的前缀: oldboy
  26. 请输入创建用户的后缀: 123
  27. 用户创建成功 oldboy123
  28. [root@qiudao ~/shell]# sh if-11.sh
  29. 请输入用户的前缀: oldboy
  30. 请输入创建用户的后缀: 123
  31. 用户已经存在 oldboy123

6. 流程控制语句if场景示例

01. 场景示例:使用root用户清空/var/log/messages日志,并每次执行保留最近100行

1)判断必须是root 2)判断文件必须存在 3)清空后需要保留最近100行

  1. #示例脚本
  2. [root@qiudao ~/shell]# cat if-12.sh
  3. #!/usr/bin/bash
  4. #1.判断用户是否是root,并且UID为0
  5. if [ $UID -eq 0 ] && [ $USER == "root" ] ;then
  6.     #2.判断文件是否存在
  7.     if [ -f /var/log/messages ];then
  8.         #保留最近100行
  9.         tail -100 /var/log/messages >/var/log/messages.bak
  10.         cat /var/log/messages.bak >/var/log/messages       echo "=======成功=========="
  11.     else
  12.         echo "文件/var/log/messages 不存在"
  13.     fi  
  14. else
  15.     echo "$USER 对$0 脚本没有执行权限"
  16. fi
  17. #执行脚本
  18. [root@qiudao ~/shell]# sh if-12.sh=======成功==========

02. 场景示例:判断sshd服务是否正常启动

1)手动怎么判断服务是正常

2)先判断服务是否是启动的      

3)如果服务是启动再判断端口是否存在

4)最后判断进程是否存在

  1. #示例脚本如下:
  2. [root@qiudao ~/shell]# cat if-13.sh
  3. #!/usr/bin/bash
  4. #1.判断服务是否启动
  5. ssh_status=$(systemctl status sshd|awk '/^.*Active/ {print $2}')
  6. if [ "$ssh_status" == "active" ];then
  7.     sleep 1
  8.     echo "sshd服务监测是 ${ssh_status}......"
  9. else
  10.     sleep 1
  11.     echo "sshd服务监测是 ${ssh_status}......."
  12. fi
  13. #2.判断端口是否存在
  14. netstat -lntp|grep "sshd" &>/dev/null
  15. if [ $? -eq 0 ];then
  16.     sleep 1
  17.     echo "sshd服务端口存活....."
  18. else
  19.     sleep 1
  20.     echo "sshd服务端口不存在...."
  21. fi
  22. #3.判断进程是否存在
  23. ps axu|grep sshd|grep -v grep|grep -v "pts" &>/dev/null
  24. if [ $? -eq 0 ];then
  25.     sleep 1
  26.     echo "sshd服务进程是存在..."
  27. else
  28.     sleep 1
  29.     echo "sshd服务进程不存在...."
  30.     ps axu|grep sshd|grep -v grep
  31. fi
  32. #执行脚本:
  33. [root@qiudao ~/shell]# sh if-13.sh
  34. sshd服务监测是 active......
  35. sshd服务端口存活.....
  36. sshd服务进程是存在..
  37. [root@qiudao ~/shell]# sh if-13.sh
  38. sshd服务监测是 inactive.......
  39. sshd服务端口不存在....
  40. sshd服务进程不存在....
  41. root 26830 0.0 0.6 161496 6152 ? Ss 10:00 0:00 sshd: root@pts/0

03. 场景示例:根据不同的系统安装不同的yum源

1)系统的版本如何判断

  1. [root@backup scripts]# cat yum1.sh
  2. #!/bin/bash
  3. #定义变量
  4. Ver=$(cat /etc/redhat-release |awk '{print $(NF-1)}')
  5. #根据变量值的结果进行判断
  6. if [ ${Ver%%.*} -eq 6 ];then
  7. #安装centos-6系列的yum源
  8. #清空旧的yum源
  9. rm -f /etc/yum.repos.d/* &>/dev/null
  10. #安装base源
  11. echo "你的操作系统为:$Ver ,开始安装${Ver%%.*}的Base源"
  12. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo &>/dev/null
  13. if [ $? -eq 0 ];then
  14. echo "$Ver 系统的Base安装成功!"
  15. else
  16. echo "$Ver 系统的Base安装失败!"
  17. fi
  18. #安装epel源
  19. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null
  20. if [ $? -eq 0 ];then
  21. echo "$Ver 系统的Epel安装成功!"
  22. else
  23. echo "$Ver 系统的Epel安装失败!"
  24. fi
  25. elif [ ${Ver%%.*} -eq 7 ];then
  26. #安装centos-7系列的yum源
  27. #清空旧的yum源
  28. rm -f /etc/yum.repos.d/* &>/dev/null
  29. #安装base源
  30. echo "你的操作系统为:$Ver ,开始安装${Ver%%.*}的Base源"
  31. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
  32. if [ $? -eq 0 ];then
  33. echo "$Ver 系统的Base安装成功!"
  34. else
  35. echo "$Ver 系统的Base安装失败!"
  36. fi
  37. #安装Epel源
  38. echo "你的操作系统为:$Ver ,开始安装${Ver%%.*}的Epel源"
  39. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null
  40. if [ $? -eq 0 ];then
  41. echo "$Ver 系统的Epel安装成功!"
  42. else
  43. echo "$Ver 系统的Epel安装失败!"
  44. fi
  45. else
  46. echo "你的操作系统不符合我们的要求。"
  47. exit
  48. fi

7. 流程控制语句case基本概述

01. case用来实现对程序流程的选择、循环等进行控制。语法如下:

  1. [root@backup scripts]# cat rc.sh
  2. #!/bin/bash
  3. #调用库函数
  4. [ -f /etc/init.d/functions ] && source /etc/init.d/functions
  5. #判断位置变量
  6. if [ $# -ne 1 ];then
  7. echo "请输入一个参数,方法如下:"
  8. echo "Usage: $0 {start|stop|status}"
  9. exit
  10. fi
  11. #编写case
  12. state=$1
  13. Rsync=/var/run/rsync.pid
  14. case $state in
  15. start)
  16. if [ -f $Rsync ];then
  17. action " Rsync 正在运行。。。。" /bin/true
  18. else
  19. touch $Rsync
  20. /usr/bin/rsync --daemon &>/dev/null
  21. if [ $? -eq 0 ];then
  22. action "Rsync 服务启动成功" /bin/true
  23. else
  24. action "Rsync 服务启动失败" /bin/false
  25. fi
  26. fi
  27. ;;
  28. stop)
  29. if [ -f $Rsync ];then
  30. rm -f $Rsync && pkill rsync &>/dev/null
  31. if [ $? -eq 0 ];then
  32. action "Rsync 服务关闭" /bin/true
  33. else
  34. action "Rsync 没用运行" /bin/true
  35. fi
  36. else
  37. action "Rsync 没有运行" /bin/true
  38. fi
  39. ;;
  40. restart)
  41. if [ -f $Rsync ];then
  42. action "Rsync 正在运行。。。" /bin/true
  43. rm -f $Rsync && pkill rsync &>/dev/null
  44. if [ $? -eq 0 ];then
  45. action "Rsync 服务关闭成功" /bin/false
  46. else
  47. action "Rsync 服务关闭失败" /bin/false
  48. fi
  49. else
  50. action "Rsync 服务没有运行" /bin/false
  51. fi
  52. touch $Rsync
  53. /usr/bin/rsync --daemon &>/dev/null
  54. if [ $? -eq 0 ];then
  55. action "Rsync 服务重启成功" /bin/true
  56. else
  57. action "Rsync 服务启动失败" /bin/false
  58. fi
  59. ;;
  60. *)
  61. echo "请输入一个参数,方法如下:"
  62. echo "Usage: $0 {start|stop|status|restart}"
  63. exit
  64. esac
  1. ## [root@qiudao /scripts]# sh case1.sh
  2. | 1. Installed PHP 5.5
  3. | 2. Installed PHP 5.6
  4. | 3. Installed PHP 7.0
  5. ## | 4. Exit
  6. 请输入你要安装的php版本[1|2|3|4]: 1
  7. 正在安装5.5版本的PHP,请稍后....
  8. 安装5.5版本的PHP安装成功!
  9. ## [root@qiudao /scripts]# sh case1.sh
  10. | 1. Installed PHP 5.5
  11. | 2. Installed PHP 5.6
  12. | 3. Installed PHP 7.0
  13. ## | 4. Exit
  14. 请输入你要安装的php版本[1|2|3|4]: 4

8. 流程控制语句case场景示例

01. 场景示例一:写一个rsync的启动和停止的脚本

1.如何启动的命令 rsync --daemon

    ps aux|grep rsync|grep -v grep

2.如何停止kill,

pkill rsync

使用if判断

  1. [root@qiudao /scripts]# cat daemon.sh
  2. #!/usr/bin/bash
  3. source /etc/init.d/functions
  4. rs=$1
  5. #1.如果用户传递的第一个位置参数是start则执行如下if语句
  6. if [ $rs == "start" ];then
  7. #在启动rsync服务前,先判断是否存在pid文件(手动创建的pid文件)
  8. if [ ! -f /var/run/rsync.pid ];then
  9.     #如果不存在pid,则手动创建并启动服务(加锁机制)
  10.         touch /var/run/rsync.pid
  11.         rsync --daemon
  12.         action "Rsync Starting...." /bin/true
  13. else
  14.         action "Rsync Service Running..." /bin/false
  15. fi
  16. elif [ $rs == "stop" ];then
  17. if [ ! -f /var/run/rsync.pid ];then
  18.         action "Rsync Service Stoppend...." /bin/false
  19. else
  20.         #如果停止服务,一定需要删除pid
  21.         rm -f /var/run/rsync.pid
  22.         pkill rsync
  23.         action "Rsync Stopting....." /bin/true
  24. fi
  25. elif [ $rs == "status" ];then
  26. if [ ! -f /var/run/rsync.pid ];then
  27.         echo "Rsync Service Status InActive...."
  28. else
  29.         Rsync_Status=$(ps aux|grep rsync|grep -v grep|awk '{print $2}')
  30.         echo "Rsync Service Status Active( pid号为:"$Rsync_Status" )"
  31. fi
  32. else
  33.     echo "USAGE: $0 {start|stop}"
  34.     exit
  35. fi

使用case语句

  1. root@qiudao /scripts]#     cat rsync.sh
  2. #!/usr/bin/bash
  3. source /etc/init.d/functions
  4. rs=$1
  5. case $rs in
  6.     start)
  7.      if [ ! -f /var/run/rsync.pid ];then
  8.             touch /var/run/rsync.pid
  9.             rsync --daemon
  10.             action "Rsync Starting...." /bin/true
  11.      else
  12.             action "Rsync Service Running..." /bin/false
  13.     fi
  14.         ;;
  15.     stop)
  16.      if [ ! -f /var/run/rsync.pid ];then
  17.             action "Rsync Service Stoppend...." /bin/false
  18.      else
  19.             rm -f /var/run/rsync.pid
  20.             pkill rsync
  21.             action "Rsync Stopting....." /bin/true
  22.      fi
  23.         ;;
  24.     status)
  25.      if [ ! -f /var/run/rsync.pid ];then
  26.             echo "Rsync Service Status InActive...."
  27.     else
  28.             Rsync_Status=$(ps aux|grep rsync|grep -v grep|grep -v pts|awk '{print $2}')
  29.             echo "Rsync Service Status Active( "$Rsync_Status" )"
  30.     fi
  31.         ;;
  32.     *)
  33.         echo "USAGE: $0 {start|stop|status}"
  34.         exit
  35. esac

02. 场景示例二:编写一个nginx的启动和停止脚本。

1.如何启动 /usr/sbin/nginx

2.如何停止     /usr/sbin/nginx -s stop

3.如何重载    /usr/sbin/nginx -s reload

  1. [root@backup scripts]# cat status1.sh
  2. #!/bin/bash
  3. #判断用户是否输入一个位置参数
  4. if [ $# -ne 1 ];then
  5. echo "请输入一个参数,具体事例如下:"
  6. echo "Usage: $0 {start|stop|reloas}"
  7. exit
  8. fi
  9. #判断nginx是否开启
  10. rc=/run/nginx.pid
  11. #编写case语句
  12. dir=$1
  13. case $dir in
  14. start)
  15. /usr/sbin/nginx &>/dev/null
  16. if [ $? -eq 0 ];then
  17. echo "nginx服务已启动:"
  18. else
  19. echo "nginx服务启动失败"
  20. fi
  21. ;;
  22. stop)
  23. if [ -f $rc ];then
  24. echo "nginx在启动zhaungtai"
  25. /usr/sbin/nginx -s stop &>/dev/null
  26. if [ $? -eq 0 ];then
  27. echo "nginx服务停止成功"
  28. else
  29. echo "nginx服务停止失败"
  30. fi
  31. else:
  32. echo "nginx 已经停止"
  33. fi
  34. ;;
  35. reload)
  36. #判断nginx服务是否在启动状态
  37. if [ -f $rc ];then
  38. echo "nginx 已启动"
  39. /usr/sbin/nginx -s reload &>/dev/null
  40. if [ $? -eq 0 ];then
  41. echo "nginx重载成功"
  42. else
  43. echo "nginx重载失败"
  44. fi
  45. else
  46. /usr/sbin/nginx &>/dev/null
  47. if [ $? -eq 0 ];then
  48. /usr/sbin/nginx -s reload &>/dev/null
  49. if [ $? -eq 0 ];then
  50. echo "nginx重载成功"
  51. else
  52. echo "nginx重载失败"
  53. fi
  54. else
  55. echo "nginx启动失败,需要重新检测"
  56. fi
  57. fi
  58. ;;
  59. *)
  60. echo "请输入一个参数,具体事例如下:"
  61. echo "Usage: $0 {start|stop|reloas}"
  62. exit
  63. esac
  1. [root@qiudao /scripts]# cat case-4.sh
  2. #!/usr/bin/bash
  3. source /etc/init.d/functions
  4. #加锁
  5. if [ -f /tmp/nginx.lock ];then
  6.     echo "此脚本正在运行,请稍后....."
  7.     exit
  8. fi
  9. touch /tmp/nginx.lock
  10. rc=$1
  11. case $rc in
  12.     start)
  13.         if [ -f /var/run/nginx.pid ];then
  14.             action "nginx服务已经启动...." /bin/false
  15.             exit
  16. else
  17.             /usr/sbin/nginx
  18.             action "nginx服务启动成功..." /bin/true
  19.         fi
  20.         ;;
  21.     stop)
  22.         if [ -f /var/run/nginx.pid ];then
  23.             /usr/sbin/nginx -s stop
  24.             if [ $? -eq 0 ];then
  25.                 action "nginx关闭成功..." /bin/true
  26.             else
  27.                 action "nginx关闭失败..." /bin/false
  28.             fi
  29.         else
  30.             action "nginx已经关闭...[error] open() /run/nginx.pid" /bin/false
  31.         fi        
  32.         ;;
  33.     reload)
  34.         if [ -f /var/run/nginx.pid ];then
  35.             sleep 2
  36.             /usr/sbin/nginx -s reload
  37.             if [ $? -eq 0 ];then
  38.                 action "nginx重载成功..." /bin/true
  39.             else
  40.                 action "nginx重载失败..." /bin/false  
  41.             fi
  42.         else
  43.             action "nginx没有启动,无法完成重载" /bin/false
  44.         fi
  45.         ;;
  46.     status)
  47.         if [ -f /var/run/nginx.pid ];then
  48.             nginx_pid=$(cat /var/run/nginx.pid)
  49.             echo "nginx ( $nginx_pid ) is running...."
  50.         else
  51.             echo "nginx is Not running...."
  52.         fi
  53.         ;;
  54.   
  55.     *)
  56.         echo "USAGE: $0 [ start | stop | reload | status ] "
  57. esac
  58. #解锁
  59. rm -f /tmp/nginx.lock
  1. #加强版
  2. [root@qiudao /scripts]# cat case-5.sh
  3. #!/usr/bin/bash
  4. source /etc/init.d/functions
  5. #加锁
  6. Lock=/tmp/nginx.lock
  7. if [ -f $Lock ];then
  8.     echo "此脚本正在运行,请稍后....."
  9.     exit
  10. fi
  11. touch $Lock
  12. rc=$1
  13. case $rc in
  14.     start)
  15.         if [ -f /var/run/nginx.pid ];then
  16.         sleep 10
  17.             action "nginx服务已经启动...." /bin/false
  18. else
  19.             /usr/sbin/nginx
  20.             action "nginx服务启动成功..." /bin/true
  21.         fi
  22.         ;;
  23.     stop)
  24.         if [ -f /var/run/nginx.pid ];then
  25.             /usr/sbin/nginx -s stop
  26.             if [ $? -eq 0 ];then
  27.                 action "nginx关闭成功..." /bin/true
  28.             else
  29.                 action "nginx关闭失败..." /bin/false
  30.             fi
  31.         else
  32.             action "nginx已经关闭...[error] open() /run/nginx.pid" /bin/false
  33.         fi
  34.         
  35.         ;;
  36.     reload)
  37.         if [ -f /var/run/nginx.pid ];then
  38.             /usr/sbin/nginx -t &>/dev/null
  39.             if [ $? -eq 0 ];then
  40.                 /usr/sbin/nginx -s reload
  41.                 if [ $? -eq 0 ];then
  42.                     action "nginx重载成功..." /bin/true
  43.                 else
  44.                     action "nginx重载失败..." /bin/false    
  45.                 fi
  46.             else
  47.                 /usr/sbin/nginx -t &>err.txt
  48.                 nginx_conf=$(awk -F "[: ]" 'NR==1{print $(NF-1)}' err.txt)
  49.                 nginx_line=$(awk -F "[: ]" 'NR==1{print $(NF)}' err.txt)
  50.                 /usr/sbin/nginx -t
  51.                 read -p "$nginx_conf 配置文件有错,在第 $nginx_line 行, 是否要需要进行配置修改 [y|n]: " re
  52.                 case $re in
  53.                     y|yes|YES)
  54.                         vim +${nginx_line} ${nginx_conf}
  55.                         ;;
  56.                     n|no|NO)
  57.                         echo "你可以选择手动修改,再见!"
  58.                         ;;
  59.                     *)
  60.                         echo "USAGE: $0 {y|n} "
  61.                 esac
  62.             fi
  63.         else
  64.             action "nginx没有启动,无法完成重载" /bin/false
  65.         fi
  66.         ;;
  67.     status)
  68.         if [ -f /var/run/nginx.pid ];then
  69.             nginx_pid=$(cat /var/run/nginx.pid)
  70.             echo "nginx ( $nginx_pid ) is running...."
  71.         else
  72.             echo "nginx is Not running...."
  73.         fi
  74.         ;;
  75.     *)
  76.         echo "USAGE: $0 [ start | stop | reload | status ] "
  77. esac
  78. #解锁
  79. rm -f $Lock

03. 场景示例三:实现系统管理工具箱

  1. [root@qiudao /scripts]# cat case-6.sh
  2. cat << EOF
  3. ################################
  4. h 显示命令帮助
  5. f 显示磁盘分区
  6. d 显示磁盘挂载
  7. m 显示内存使用
  8. u 查看系统挂载
  9. q 退出
  10. #################################
  11. EOF
  12. read -p "请输入你要查询的状态:" sys
  13. #编辑case语句
  14. case $sys in
  15. h)
  16. help
  17. ;;
  18. f)
  19. df -h
  20. ;;
  21. d)
  22. df -h
  23. ;;
  24. m)
  25. free -m
  26. ;;
  27. u)
  28. w
  29. ;;
  30. q)
  31. exit
  32. ;;
  33. *)
  34. echo "请按示例输入Usage:$0 {h|f|d|m|u|q}"
  35. esac

04. 场景示例四:实现简单的JumpServer

  1. 1.执行脚本后,需要看到所有我能管理的主机2.有一个选择菜单,提示输入连接某个主机3.需要写一个死循环,保证程序连接后端服务,退出后还能接着选择主机。4.不能让跳板机直接ctrl+c ctrl+z退出了,trap 控制ctrl+c ctrl+z的信号5.退出服务器的会话,再次登录,又可以正常操作服务器。将脚本加入到/etc/bashrc中,当用户一连接,自动就运行该脚本。
  2. #加强版
  3. [root@qiudao /scripts]# cat jumpserver2.sh
  4. #!/usr/bin/
  5. fun(){
  6. cat <<EOF
  7. #####################################
  8. 1 db01-172.16.1.51
  9. 2 db02-172.16.1.51
  10. 3 nfs01-172.16.1.31
  11. 4 help
  12. 5 退出
  13. ######################################
  14. EOF
  15. }
  16. fun
  17. trap ""HUP INT YSYP
  18. while true
  19. do
  20. #请你输入想要连接的主机号
  21. read -p "请你输入想要连接的主机号,请输入[1|2|3]" con
  22. case #con in
  23. 1)
  24. ssh root@172.16.1.51
  25. ;;
  26. 2)
  27. ssh root@172.16.1.52
  28. ;;
  29. 3)
  30. ssh root@172.16.1.31
  31. ;;
  32. 4)
  33. clear
  34. fun
  35. ;;
  36. 5)
  37. exit
  38. ;;
  39. *)
  40. echo "Usage: $0请输入真确的编号如[1|2|3|4|5]"
  41. esac
  42. done

1.执行脚本后,需要看到所有我能管理的主机2.有一个选择菜单,提示输入连接某个主机3.需要写一个死循环,保证程序连接后端服务,退出后还能接着选择主机。4.不能让跳板机直接ctrl+c ctrl+z退出了,trap 控制ctrl+c ctrl+z的信号5.退出服务器的会话,再次登录,又可以正常操作服务器。将脚本加入到/etc/bashrc中,当用户一连接,自动就运行该脚本。

05. 场景示例五:实现多级菜单功能

  1. [root@backup scripts]# cat funl.sh
  2. #!/bin/bash
  3. ##############################################################
  4. # File Name: funl.sh
  5. # Time: 2019-10-20-16:59:06
  6. # Author: qls
  7. # Organization: www.increase93.com
  8. ##############################################################
  9. fun_main(){
  10. cat <<EOF
  11. ----------------main-----------------
  12. | 1) 安装nginx |
  13. | 2 安装php |
  14. | 3)退出 |
  15. -------------------------------------
  16. EOF
  17. }
  18. fun_main_nginx(){
  19. cat <<EOF
  20. ----------------------nginx--------------------
  21. 1 安准nginx1.1
  22. 2 安装nginx1.2
  23. 3 安装nginx1.3
  24. 4 返回上一页
  25. -----------------------------------------------
  26. EOF
  27. }
  28. fun_main_php(){
  29. cat <<EOF
  30. ----------------------php--------------------
  31. 1 安准php1.1
  32. 2 安装php1.2
  33. 3 安装php1.3
  34. 4 返回上一页
  35. -----------------------------------------------
  36. EOF
  37. }
  38. while true
  39. do
  40. fun_main
  41. read -p "请输入主菜单需要选择的选项,使用方法如[1|2|3]: " fun
  42. case $fun in
  43. 1)
  44. clear
  45. while true
  46. do
  47. fun_main_nginx
  48. read -p "请输入你需要安装nginx的版本选项如[1|2|3|4]: " dir
  49. case $dir in
  50. 1)
  51. clear
  52. echo "安装nginx1.1......"
  53. sleep 5
  54. ;;
  55. 2)
  56. clear
  57. echo "............."
  58. ;;
  59. 4)
  60. clear
  61. break
  62. ;;
  63. esac
  64. done
  65. ;;
  66. 2)
  67. clear
  68. while true
  69. do
  70. fun_main_php
  71. read -p "请输入你需要安装php的版本选项如[1|2|3|4]: " dir1
  72. case $dir1 in
  73. 1)
  74. clear
  75. echo "安装php1.1......"
  76. sleep 5
  77. ;;
  78. 2)
  79. clear
  80. echo "............."
  81. ;;
  82. 4)
  83. clear
  84. break
  85. ;;
  86. esac
  87. done
  88. ;;
  89. 3)
  90. exit
  91. ;;
  92. *)
  93. echo "Usage:[1|2|3]"
  94. esac
  95. done

补充:

一. trap捕捉到信号之后,可以有三种反应方式:

  (1)执行一段程序来处理这一信号

  (2)接受信号的默认操作

  (3)忽视这一信号

  二. trap对上面三种方式提供了三种基本形式:

  第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双

  引号中的命令串。

  trap 'commands' signal-list

  trap "commands" signal-list

  为了恢复信号的默认操作,使用第二种形式的trap命令:

  trap signal-list

  第三种形式的trap命令允许忽视信号

  trap " " signal-list

  注意:

  (1) 对信号11(段违例)不能捕捉,因为shell本身需要捕捉该信号去进行内存的转储。

  (2) 在trap中可以定义对信号0的处理(实际上没有这个信号), shell程序在其终止(如

  执行exit语句)时发出该信号。

  (3) 在捕捉到signal-list中指定的信号并执行完相应的命令之后, 如果这些命令没有

  将shell程序终止的话,shell程序将继续执行收到信号时所执行的命令后面的命令,这样将

  很容易导致shell程序无法终止。

  另外,在trap语句中,单引号和双引号是不同的,当shell程序第一次碰到trap语句时,

  将把commands中的命令扫描一遍。此时若commands是用单引号括起来的话,那么shell不会

  对commands中的变量和命令进行替换, 否则commands中的变量和命令将用当时具体的值来

  替换。

  1. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
  2. 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
  3. 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
  4. 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
  5. 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
  6. 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  7. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
  8. 30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1
  9. 35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5
  10. 39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9
  11. 43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13
  12. 47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-15 50) SIGRTMAX-14
  13. 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
  14. 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
  15. 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  16. 63) SIGRTMAX-1 64) SIGRTMAX

流程控制语句if基本概述的更多相关文章

  1. Java基础学习-流程控制语句

    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...

  2. Java基础三(Scanner键盘输入、Random随机数、流程控制语句)

    1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...

  3. 03_Java基础语法_第3天(Scanner、Random、流程控制语句)_讲义

    今日内容介绍 1.引用类型变量的创建及使用 2.流程控制语句之选择语句 3.流程控制语句之循环语句 4.循环高级 01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scan ...

  4. 2017.10.14 Java的流程控制语句switch&&随机点名器

    今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构     * A:switch语句解构       * a:switch只能针对某个表达式的值作 ...

  5. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  6. 8-04流程控制语句BEGIN ..END

     流程控制语句: 是用来控制程序流程的语句. 常用的流程控制语句的分类: 顺序结构:BEGIN...END 分支结构: IF ..ELSE 或CASE ..END 循环结构:WHILE 顺序结构 语法 ...

  7. JAVA 1.6 流程控制语句

    1. 条件运算符(三元表达式),其形式为:type d = a ? b : c; 具体化形式为:int d = 2 < 1 ? 3 : 4;2. 轻量级的文本编辑器:UltraEdit.Edit ...

  8. 20151013 C# 第一篇 流程控制语句

    20151013 流程控制语句: 1.选择语句 if … else if...else 选择语句 if(布尔表达式){  语句块:} if(布尔表达式){  语句块1:}else{  语句块2:} i ...

  9. java基础3_流程控制语句

    一 条件判断 1. 条件运算符(三元表达式) ,其形式为: type d = a ? b : c; 具体化形式为:int d = 2 < 1 ? 3 : 4; 2. 轻量级的文本编辑器:Ultr ...

随机推荐

  1. ASP.NET Core on K8S深入学习(11)K8S网络知多少

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.Kubernetes网络模型 我们都知道Kubernetes作为容器编排引 ...

  2. SpringBoot FatJar启动原理

    目录 SpringBoot FatJar启动原理 背景 储备知识 URLStreamHandler Archive 打包 SpringBoot启动 扩展 SpringBoot FatJar启动原理 背 ...

  3. Spring Boot 处理异常返回json

    spring boot 老版本处理异常  对于浏览器客户端,返回error数据 对于非浏览器返回json数据, 主要取决于你的请求head 是什么 但是当我们自定义了:  老版本无论请求什么都会返回j ...

  4. 浅析JNDI注入Bypass

    之前在Veracode的这篇博客中https://www.veracode.com/blog/research/exploiting-jndi-injections-java看到对于JDK 1.8.0 ...

  5. 用python重新定义【2019十大网络流行语】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:朱小五 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  6. 5.Ansible Jinja2 模板

    1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的 jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? te ...

  7. TSC打印机防重码在线检测系统

    条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...

  8. 地图 SDK 系列教程-在地图上展示指定区域(转载)

    腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...

  9. navicat for mysql 连接 mysql 出现Client does not support authentication protocol requested by server解决方案

    一 .桌面左下角windows图标--搜索框内输入cmd,结果如图所示,点击cmd.exe,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回车. 二. 在出来的 ...

  10. kubernetes搭建(可访问外网环境部署)

    版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明. 本文链接地址:https://www.cnblogs.com/wannengachao/p/11947621.html 一.前 ...