Linux之shell中if语句--test命令

Phylicia ·
更新时间:2024-11-14
· 923 次阅读

文章目录1.test命令的用法1.1数值比较1.2字符串比较1.3文件比较2.复合条件测试3.if-then的高级特性 1.test命令的用法

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值字符串文件三个方面的测试。
在这里插入图片描述
test命令可以判断三类条件:

数值比较

字符串比较

文件比较

1.1数值比较 可以用在数字和变量上
比较 描述
n1 -eq n2 检查n1是否与n2相等
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2

例1: 比较变量的值和数字的大小,比较变量的值和变量的值的大小

方法一:
在这里插入图片描述
在这里插入图片描述 方法二(不常用):
在这里插入图片描述
在这里插入图片描述 test命令中不能使用浮点数
在这里插入图片描述
在这里插入图片描述 1.2字符串比较
比较 说明
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

方法:

[ str1 str2 ]

注意:这里比较的是字符串,而不是字符串的长度

字符串大小的比较遵循字典顺序,规则如下:
1.如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about)
2.从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball)
3.如果第一个字符相同,再比较第二个(比如about小于above) 小知识:
echo $USER 输出当前系统的正在登录的用户
在这里插入图片描述
例1: 判断当前登录用户是否为root(等于和不等于比较)
(1)
在这里插入图片描述
在这里插入图片描述 注意:test比较字符串相等性时会将所有的标点和大写也考虑在内
(2)
在这里插入图片描述
在这里插入图片描述
(3)
在这里插入图片描述
在这里插入图片描述

例2: 判断两个字的字符串的大小(大于小于比较)

错误写法,不转义大于号时,shell会将 > 识别为输出重定向,它会创建hockey文件。因为系统会执行重定向(if后面)的语句,所以退出状态为0,判断条件为真,所以会执行then后面的语句。
在这里插入图片描述
在这里插入图片描述 正确写法应该转义大于号
大于小于号必须转义,否则shell会将大于号看做输出重定向,而把字符串看作文件名。
在这里插入图片描述
在这里插入图片描述
例3: 判断字符串长度是否为0(是否为0比较)
在这里插入图片描述
在这里插入图片描述 1.3文件比较
比较 说明
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 file2 检查file1是否比file2新
file1 -ot file2 file2 检查file1是否比file2旧

例1: 判断目录是否存在(-d)
在这里插入图片描述
在这里插入图片描述
例2: 判断文件是否存在(-e)
在这里插入图片描述
例3: 判断文件是否存在并且是一个普通文件(-f)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例4: 判断文件是否可读(-r)
在这里插入图片描述
在这里插入图片描述

tail filename 为输出filename的最后10行内容

例5: 如果文件是否存在并且非空(-s)
在这里插入图片描述
在这里插入图片描述
当在文件中追加数据时
在这里插入图片描述
例6: 如果文件存在且可写为真(-w)
测试此文件 需要切换至普通用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例7: 测试文件是否可执行(-x)
:在这里插入图片描述
在这里插入图片描述
例8: 判断文件是否存在并且属于当前用户所有(-O)
在这里插入图片描述
在这里插入图片描述
例9: 判断文件是否存在并且默认组与当前用户的相同(-G)
在这里插入图片描述
在这里插入图片描述
例10: 判断文件的创建时间的早晚(新旧)(-nt|-ot)
在这里插入图片描述
在这里插入图片描述

2.复合条件测试

在这里插入图片描述
例1:
在这里插入图片描述
在这里插入图片描述

3.if-then的高级特性

在这里插入图片描述

双尖括号(()) 方括号 [[ ]] —>有针对字符串比较高级的特性—>通配功能

例1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


作者:马婧瑜



Linux IF if语句 shell

需要 登录 后方可回复, 如果你还没有账号请 注册新账号