shell之条件测试和if语句

拼搏现实的明天。 2023-06-19 09:42 129阅读 0赞

文章目录

    • 一、条件测试
      • 1.1、文件测试
      • 1.2、整数测试
      • 1.3、字符串与逻辑测试
      • 1.4、逻辑测试
      • 1.5、运算符
    • 二、if 判断语句
      • 2.1、if 单分支语句
      • 2.2、if双分支语句
      • 2.3、if多分支语句

一、条件测试

1.1、文件测试

test命令

  1. test命令:测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
  2. 命令基本格式
  3. 格式一:test 条件表达式
  4. 格式二:[ 条件表达式 ] '两端要有空格,此法更为常用'

在这里插入图片描述

  1. 文件测试基本格式
  2. [ 操作符 文件或目录 ] '注意两端空格'
  3. &? 返回0表示条件成立,返回非零值表示条件不成立
  4. && 逻辑与,"而且"的意思
  5. || 逻辑或,"或者"的意思
  6. [root@localhost mnt]# touch abc
  7. [root@localhost mnt]# [ -r abc ] && echo "yes"
  8. yes
  9. [root@localhost mnt]# [ -w abc ] && echo "yes"
  10. [root@localhost mnt]#
  11. [root@localhost mnt]# [ -w abc ] || echo "yes"
  12. yes

1.2、整数测试

  1. 命令基本格式
  2. [ 整数1 操作符 整数2 ]

常用的测试操作符
在这里插入图片描述

  1. [root@localhost mnt]# [ 5 -gt 3 ] && echo "yes"
  2. yes
  3. [root@localhost mnt]# [ 5 -gt 6 ] && echo "yes"
  4. [root@localhost mnt]# [ 5 -le 6 ] && echo "yes"
  5. yes
  6. [root@localhost mnt]# [ 5 -le 3 ] && echo "yes"
  7. [root@localhost mnt]# free -m
  8. total used free shared buff/cache available
  9. Mem: 1823 692 82 9 1048 908
  10. Swap: 4095 0 4095
  11. [root@localhost mnt]# free -m | grep "Mem" | awk '{print $4}'
  12. 82
  13. [root@localhost mnt]# ddd=$(free -m | grep "Mem" | awk '{print $4}')
  14. [root@localhost mnt]# echo $ddd
  15. 84
  16. [root@localhost mnt]# [ $(free -m | grep "Mem" | awk '{print $4}') -gt 100 ] && echo "yes"
  17. [root@localhost mnt]# [ $(free -m | grep "Mem" | awk '{print $4}') -gt 80 ] && echo "yes"
  18. yes

1.3、字符串与逻辑测试

  1. 常用的格式
  2. 格式一:[ 字符串1 = 字符串2 ]
  3. [ 字符串1 != 字符串2 ]
  4. 格式二:[ -z 字符串 ]

在这里插入图片描述

1.4、逻辑测试

在这里插入图片描述

  1. [root@localhost opt]# [ ! -d /opt/demo ] && echo "yes"
  2. [root@localhost opt]# [ 1 -eq 1 ] && [ 2 -eq 2 ] && echo "yes"
  3. yes

1.5、运算符

  • 一元运算符
    i++和++i 的意义在于前面有没有赋值运算符。
    i++ 就是先赋值再自加,++i 就是先自加再赋值。
    i=–i:先自减在赋值

    [root@localhost mnt]# i=1
    [root@localhost opt]# echo $i
    1
    [root@localhost opt]# let i=++i
    [root@localhost opt]# echo $i
    2
    [root@localhost opt]# let i+=2 ‘相当于i=i+2’
    [root@localhost opt]# echo $i
    4

  • 二元运算符
    a+b=c

  • 三元运算符
    条件&&结果1||结果2

二、if 判断语句

2.1、if 单分支语句

  1. 单分支结构(基本格式)
  2. if 条件测试操作
  3. then 命令序列
  4. fi
  5. [root@localhost opt]# vim a.sh
  6. #!/bin/bash
  7. if [ ! -d demo01 ] '若不存在demo01,则执行下述命令'
  8. then
  9. mkdir -p demo01
  10. echo "demo01创建成功"
  11. fi
  12. [root@localhost opt]# chmod +x a.sh
  13. [root@localhost opt]# ./a.sh
  14. demo01创建成功

2.2、if双分支语句

  1. 双分支结构(基本格式)
  2. if 条件测试操作
  3. then 命令序列1
  4. else 命令序列2
  5. fi
  6. 举例:查看目标主机是否存活,显示检测结果
  7. [root@localhost opt]# vim a.sh
  8. #!/bin/bash
  9. read -p "请输入IP地址:" ip
  10. ping -c 3 -i 0.2 -W 3 $ip &> /dev/null
  11. if [ $? -eq 0 ]
  12. then
  13. echo "$ip is up"
  14. else
  15. echo "$ip is down"
  16. fi
  17. [root@localhost opt]# chmod +x a.sh
  18. [root@localhost opt]# ./a.sh
  19. 请输入IP地址:192.168.220.130
  20. 192.168.220.130 is down
  21. [root@localhost opt]# ./a.sh
  22. 请输入IP地址:192.168.220.131
  23. 192.168.220.131 is up
  24. 其中:
  25. -c:发送三个包
  26. -i 发包间隔0.2
  27. -W:等待时间3

2.3、if多分支语句

  1. 多分支结构(基本格式)
  2. if 条件测试操作1
  3. then 命令序列1
  4. elif 条件测试操作2
  5. then 命令序列2
  6. else
  7. 命令序列3
  8. fi
  9. 举例:判断分数范围,分数优秀,合格,不合格三挡
  10. [root@localhost opt]# vim b.sh
  11. #!/bin/bash
  12. read -p "请输入成绩:" score
  13. if [ $score -lt 0 ] || [ $score -gt 100 ]
  14. then
  15. echo "输入有误"
  16. exit 1;
  17. elif [ $score -ge 85 ] && [ $score -le 100 ]
  18. then
  19. echo "成绩优秀"
  20. elif [ $score -ge 70 ] && [ $score -le 84 ]
  21. then
  22. echo "成绩合格"
  23. else
  24. echo "成绩不合格"
  25. fi
  26. [root@localhost opt]# ./b.sh
  27. 请输入成绩:99
  28. 成绩优秀
  29. [root@localhost opt]# ./b.sh
  30. 请输入成绩:84
  31. 成绩合格
  32. [root@localhost opt]# ./b.sh
  33. 请输入成绩:53
  34. 成绩不合格
  35. [root@localhost opt]# ./b.sh
  36. 请输入成绩:120
  37. 输入有误
  38. [root@localhost opt]# ./b.sh
  39. 请输入成绩:-2
  40. 输入有误

发表评论

表情:
评论列表 (有 0 条评论,129人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Shell if条件语句

    1.if条件语句:设定一个条件如果怎么,然后怎么样。 (1)-gt大于。-lt小于。-ge大于等于。-le小于等于。-eq等于。-ne不等于。 (2