shell脚本条件测试语句,if,case

一.条件测试

1.1test命令

测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值。

格式:
test  条件表达式
或【条件表达式】(条件表达式的两边都需要有空格,且此方法更为常用)

1.2文件测试

1.2.1文件测试常见选项

常见的测试操作符 含义
-d 测试是否为目录
-e 测试目录或文件是否存在
-f 测试是否为文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
-L 测试是否为软连接文件
-nt 判断文件A是否比文件B新
-ot 判断文件A是否比文件B旧
-ef 判断两个文件是否为同一文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

1.3数值比较

格式:
【整数1  操作符  整数2】

常见测试操作符

操作符 含义
-eq 等于
-ne 不等于
-lt xiaoyu
-gt 大于
-le 小于或等于
-ge 大于或等于

查询当前目录下的文件数是否大于10,如果大于,则进行提示

[root@localhost ~]#ls |wc -l
15
[root@localhost ~]#test `ls |wc -l` -gt 10 && echo 文件数大于10
文件数大于10

查看系统内存是否低于1024M ,如果低于则提示

[root@localhost ~]#free -m
              total        used        free      shared  buff/cache   available
Mem:           1758         359         790          17         608        1161
Swap:          3839           0        3839
[root@localhost ~]#free -m|grep "Mem"
Mem:           1758         359         791          17         608        1161
[root@localhost ~]#free -m|grep "Mem"|awk '{print $4}'
790
[root@localhost ~]#free=`free -m|grep "Mem"|awk '{print $4}'`
[root@localhost ~]#echo $free 
790
[root@localhost ~]#test `echo $free` -lt 1024 && echo 内存不足1024M
内存不足1024M
[root@localhost ~]#

1.4字符串比较

 格式:
【字符串1=字符串2】   # 判断是否相等
【字符串1!= 字符串2】   # 判断是否不等
【-z  字符串】                     # 判断字符串是否为空

操作符

扫描二维码关注公众号,回复: 16396903 查看本文章
操作符 含义
= 字符串内容相等
!= 字符串内容不同,!号表示相反的意思
-z 字符串为空
[root@localhost ~]#echo $LANG
zh_CN.UTF-8
[root@localhost ~]#test `echo $LANG`="us.en"&&echo 当前系统语言不是us.en,当前系统语言为`echo $LANG`
当前系统语言不是us.en,当前系统语言为zh_CN.UTF-8
[root@localhost ~]#

1.5逻辑测试

格式:
【表达式1】操作符 【表达式2】
命令1 操作符 命令2

操作符:

-a或&& 逻辑与,而且的意思
-o或ll 逻辑或,或者的意思
逻辑否

二.if语句

2.1单分支结构

格式
if  【条件判断式】;than
       当条件判断成立时,执行一条或多条命令
fi

如果只有一个判断式要进行,那么我们可以使用单分支的if语句,只有在条件成立时才会执行,否则不会执行任何操作
在这里插入图片描述

2.3多分支

if【条件判断式】;then
    当条件判断成立时,可以执行一条或多条命令
 elif【条件判断式二】;then
     当条件判断成立时,可以执行一条或多条命令
  else
       当上面条件判断都不成立时,可以执行一条或多条命令
   fi

如果数据需要进行多种不同得到判断,则可以使用多支结构嵌套使用
在这里插入图片描述

三.case语句

格式;
case 变量名称 in
模式1)
   命令序列
   ;;
模式2)
     程序段
     ;;
        *)
        不包含第一个变量内容与第一个变量内容的其他程序执行段
        默认程序段
        ;;

esac

注意点:

  • case行首必须以单词“in”,每一模式必须以单个右括号结束
  • 双分号“;;”表示命令序列的结束
  • 模式字符串中,可以用方括号表示一个连续的范围,如“【0-9】”;还可以使用|表示或,比如a|b
  • 最后的)表示默认模式,其中的相当于通配符
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fyb012811/article/details/132228530