千家信息网

如何进行Shell脚本的条件测试和if条件语句使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,如何进行Shell脚本的条件测试和if条件语句使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、条件测试操作test命令是专门用
千家信息网最后更新 2026年11月03日如何进行Shell脚本的条件测试和if条件语句使用

如何进行Shell脚本的条件测试和if条件语句使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、条件测试操作

test命令是专门用来测试的工具,能够对特定条件进行测试,然后根据返回值及进行判断条件是否成立。

使用test测试命令时,包括以下两种形式:

test 条件表达式[ 条件表达式 ]

这两种方式的作用完全相同,但通常后一种形式更为常用,需要注意的是,方括号"[" 或 "]"与条件表达式之间需要至少一个空格进行分隔。

1、文件测试:

  • -d:测试是否为目录(Directory);

  • -e:测试文件或目录是否存在(Exist);

  • -f:测试是否为文件(File);

  • -r:测试当前用户是否有权限读取(Read);

  • -w:测试当前用户是否有权限写入(Write);

  • -x:测试是否设置有可执行(Excute)权限;

执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行以下操作可以测试目录/media/是否存在,如果返回值$?为0,表示存在此目录,否则表示不存在或者虽然存在但不是目录。

[root@CentOS01 ~]# test -d /boot      [root@centos01 ~]# echo $?           0

若测试的条件不成立,则测试操作的返回值将不为0(通常为1).

[root@centos01 ~]# test -d /ertec        [root@centos01 ~]# echo $?         1

2、整数值比较:

  • -eq:第一个数等于(Equal)第二个数;

  • -ne:第一个数不等于(Not Equal)第二个数;

  • -gt:第一个数大于(Greater Than)第二个数;

  • -lt:第一个数小于(Lesser Than)第二个数;

  • -le:第一个数小于或等于(Lesser or Equal)第二个数;

  • -ge:第一个数大于或等于(Greater or Equal)第二个数;

整数值比较在Shell脚本编写中的应用较多。例如,用来判断已登录用户数量、开启进程数、磁盘使用率是否超标,以及软件版本号是否符号要求等。实际 使用时,往往会通过变量引用、命令替换等方式来获取一个数值。

3、字符串比较:

  • =:第一个字符串与第二个字符串相同。

  • !=:第一个字符串与第二个字符串不相同,其中 " !"表示取反。

  • -z:检查字符串是否为空,对于未定义或赋予空值的变量将是为空串。

[root@centos01 ~]# a=1[root@centos01 ~]# b=2 [root@centos01 ~]# [ $a = $b ] && echo "yes"  [root@centos01 ~]# a=1 [root@centos01 ~]# b=2 [root@centos01 ~]# [ $a != $b ] && echo "yes"  yes

4、逻辑测试:

  • &&:逻辑与,表示"而且",只有当前后两个条件都成立时,整个测试命令的返回值才为0(结果成立),使用test命令测试时,"&&"可以使用"-a"代替。

  • ||:逻辑或,表示"或者",只要前后两个条件有一个成立,整个测试命令返回的值即为0(结果成立)。使用test命令测试时可以使用"-o"代替。

  • !:逻辑否,表示"不",只有当条件不成立时,整个测试命令返回的值才为0(结果成立)。

示例如下:

[root@centos01 ~]# a=100[root@centos01 ~]# [ $a = 100 ] && [ $a != 50 ] && echo "yes" yes      [root@centos01 ~]# c=100 [root@centos01 ~]# [ $a = 100 ] || [ $a -ge 50 ] && echo "yes"   yes

二、使用if条件语句

1、单分支if语句

if语句的"分支"指的是不同测试结果所对应的执行语句(一条或多条)。对于单分支的选择结构,只有在"条件成立"时才会执行相应的代码,否则不会执行任何操作。单分支if语句的语法格式如下所示:

单分支if语句示例:

[root@centos01 ~]# cd /usr/src/ppp     -bash: cd: /usr/src/ppp: 没有那个文件或目录  [root@centos01 ~]# vim if_dan.sh  #!/bin/bash           mount="/usr/src/ppp"       if [ ! -d $mount ]            then                  mkdir -p $mount             fi             [root@centos01 ~]# chmod +x if_dan.sh       [root@centos01 ~]# ./if_dan.sh         [root@centos01 ~]# cd /usr/src/ppp/ [root@centos01 ppp]# ls

2、双分支if语句

对于双分支的选择结构,要求针对"条件成立" "条件不成立"两种情况分别执行不同的操作。双分支if语句的语法格式如下所示:

双分支if语句示例:

[root@centos01 ~]# vim if_shuang.sh #!/bin/bashping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ]         then              echo "Host:$1 is UP!!!"else                echo "Host:$1 is DOWN!!!"fi     [root@centos01 ~]# chmod +x if_shuang.sh        [root@centos01 ~]# ./if_shuang.sh 192.168.100.10      Host:192.168.100.10 is UP!!!     [root@centos01 ~]# ./if_shuang.sh 192.168.100.103  Host:192.168.100.103 is DOWN!!!

3、多分支if语句

由于if语句可以根据测试结果的成立、不成立分别执行操作,所有能够嵌套使用,进行多次判断。例如,首先判断某学生的得分是否及格,若及格则再次判断是否高于90分等。多分支if语句的语法格式如下:

多分支if语句示例:

[root@centos01 ~]# vim if_duo.sh    #!/bin/bashread -p "请输入考试成绩:" insert if [ $insert -ge 85 ] && [ $insert -le 100 ]      then        echo "恭喜您考试成绩为优秀!!!"elif [ $insert -ge 70 ] && [ $insert -le 84 ]     then        echo "恭喜您考试成绩为合格!!!"else          echo "很遗憾您考试成绩可以收拾收拾回家种苞米了!!!"fi           [root@centos01 ~]# chmod +x if_duo.sh     [root@centos01 ~]# ./if_duo.sh    请输入考试成绩:94        恭喜您考试成绩为优秀!!![root@centos01 ~]# ./if_duo.sh请输入考试成绩:82恭喜您考试成绩为合格!!![root@centos01 ~]# ./if_duo.sh 请输入考试成绩:71恭喜您考试成绩为合格!!![root@centos01 ~]# ./if_duo.sh 请输入考试成绩:32很遗憾您考试成绩可以收拾收拾回家种苞米了!!!

关于如何进行Shell脚本的条件测试和if条件语句使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

测试 条件 语句 个数 分支 成绩 考试 命令 字符 字符串 目录 结果 输入 文件 示例 逻辑 脚本 相同 变量 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技保险 互联网科技会 科技互联网公司装修 金融科技创新监管互联网金融 未来的互联网科技 深圳国际航运科技和互联网 允成互联网科技有限公司融资 中国互联网公司排名锤子科技 四川慕妮娅互联网科技有限公司 互联网第三次科技革命特征 启辰互联网科技 陕西云淼互联网科技公司 南京一网一红互联网科技有限公司 互联网科技包装股 信承诺互联网科技有限公司 福建互联网展示科技馆设计 保山互联网科技靠谱吗 福仕德教育科技互联网 杭州科技互联网公司有哪些 河南商务圈互联网科技有限公司 互联网 科技创新 上海卓越科技 互联网 江苏南京365互联网科技 互联网金融中的现代科技 高科技互联网套路 元气玛特互联网科技公司是外包吗 锡山区互联网智能科技产品供应 中国新注册互联网科技 互联网科技新闻 杭州科技互联网公司有哪些
0