shell_编程条件if语句

桃扇骨 2021-07-26 18:01 741阅读 0赞

条件语句

  • 一.条件测试
      1. test命令
    • 2.文件测试
      • 3.指数值比较
        • 4.字符串比较
        • 格式:
          • 5.逻辑测试
          • 常用的操作符:
          • 格式:
    • 二.if语句
      • 1.单分支结构
        • 2.双分支 if 语句
          • 3.多分支结构
        • 4.case分支语句

一.条件测试

1. test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值

    格式1:test 条件表达式
    格式2:[ 条件表达式 ]

在这里插入图片描述

2.文件测试

  1. 表达式:
  2. [ 操作符 文件或目录 ]
  • 常用测试操作符





























-d 测试是否为目录
-e 测试目录或文件是否存在
-f 测试是否为文件
-r 测试是否有读取权限
-w 测试当前用户是否有写入权限
-x 测试当前用户是否有权限执行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.指数值比较

  1. 用于比较两个整数值的大小
  2. 格式:[ 整数变量1 操作符 整数变量2 ]

常用的测试操作符:






























-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.字符串比较

  • 字符串可用来查看用户输入、系统环境等是否满足条件
  • 交互式操作的shell脚本中,用来判断用户输入的位置参数是否符合要求

格式:

  1. - 格式1
  2. [ 字符串1 = 字符串2 ] [ 字符串1 == 字符串2 ]
  3. [ 字符串1 != 字符串2 ] -----不等于
  4. - 格式2
  5. [ -z 字符串 ] #检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串**
  6. [ -n 字符串 ] ### 检查是否有字符串





















=: 字符串内容相同
!=: !表示相反的意思,表示不相同
-z 字符串内容为空
-n 检查是否有字符串

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.逻辑测试

用于判断两个或多个条件之间的依赖关系

常用的操作符:

-a或&& :逻辑与,“而且”的意思,前后条件需都成立
-o或|| :逻辑或,“或者”的意思,只需前后条件中一个成立
! :逻辑否,“不”的意思

格式:

格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2

  1. [root@localhost ~]# a=5
  2. [root@localhost ~]# echo $a
  3. 5
  4. [root@localhost ~]# [ $a -ne 1 -a $a != 2 ]
  5. [root@localhost ~]# echo $?
  6. 0
  7. [root@localhost ~]# [ $a -ne 1 -o $a != 2 ]
  8. [root@localhost ~]# echo $?
  9. 0
  10. [root@localhost ~]# [ $a -ne 1 -o $a = 2 ]
  11. [root@localhost ~]# echo $?
  12. 0

在这里插入图片描述

在这里插入图片描述

二.if语句

1.单分支结构

  • if条件测试:
    条件成立:执行then后面的语句
    条件不成立:结束判断

格式:
if 条件测试操作
then
命令序列
fi

3种表达式方法:

在这里插入图片描述

2.双分支 if 语句

  • 针对两种情况执行不同的操作

    格式:
    if 条件测试操作
    then
    命令序列 1
    else
    命令序列 2
    fi

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.多分支结构
  • 针对if的特性,嵌套使用,进行多次判断。

    格式:
    if 条件测试操作 1
    then
    命令序列 1
    elif 条件测试操作 2
    then
    命令序列 2
    [else]
    [命令序列 3]
    fi

例题:
分数为80-100直接为优秀
分数为70-84之间为合格
其他为不合格

  1. #!/bin/bash
  2. read -p "请输入你的分数:" score
  3. if [ $score -ge 85 -a $score -le 100 ]
  4. then
  5. echo "你的分数为: ${score} ,优秀"
  6. elif [ $score -ge 70 -a $score -le 84 ]
  7. then
  8. echo "你的分数为:${score},合格"
  9. elif [ $score -lt 70 -a $score -ge 0 ]
  10. then
  11. echo "你的分数为:${score},不合格"
  12. else
  13. echo "输入有误,请重新输入!"
  14. fi

在这里插入图片描述

在这里插入图片描述

例题:
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其他字符则提示重新输入,并判断男女性别,男生进入男生组,女生进入女生组,输入错误则提示错误。

  1. #!/bin/bash
  2. read -p "请输入你的秒数" a
  3. if [ $a -gt 0 -a $a -le 10 ]
  4. then
  5. echo "你的秒数为:${a},进入选拔"
  6. read -p "输入性别:男/女" b
  7. if [ $b = ]
  8. then
  9. echo "进入男生组"
  10. elif [ $b = ]
  11. then
  12. echo "进入女生组"
  13. else
  14. echo "重新输入"
  15. fi
  16. elif [ $a -gt 10 ]
  17. then
  18. echo "你的秒数为:${a},淘汰"
  19. else
  20. echo "请重新输入"
  21. fi

在这里插入图片描述
在这里插入图片描述

4.case分支语句

  1. 用于变量存在多种取值,对每种取值执行不同的命令
  2. if相似,

格式:

  1. case 变量值 in
  2. 模式一)
  3. 命令序列
  4. ;;
  5. 模式二)
  6. 命令序列
  7. ;;
  8. ……
  9. *)
  10. 默认命令序列
  11. esac

①case行首必须以单词“in”,每一模式必须以单个右括号”)”结束

②双分号”;;”表示命令序列的结束

③模式字符串中,可以用方括号表示一个连续的范围,如”[0-9]“;还可以使用竖杠|表示或,比如a|b

最后的*)表示默认模式,其中的*相当于通配符

例题:
分数为85-100直接为优秀
分数为70-84之间为合格
0-69为不合格
其余判断请重新输入

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

发表评论

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

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

相关阅读

    相关 Shell if条件语句

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