shell中的判断式

  1. 前言
  2. test命令进行判断
    1. 某个路径的类型判断
    2. 路径的权限判断
    3. 两个文件之间比较
    4. 判断字符串
    5. 多重条件判定
  3. 判断符号[]
  4. 参考资料

前言

在shell中不免会测试字符串是否为空、文件是否存在和文件是否为空等等。完成这些功能就需要使用到shell中的判断式。

test命令进行判断

某个路径的类型判断

举例:test -e filename

标志 意义
-e 测试该路径是否存在
-f 该路径是否存在且为文件
-d 该路径是否存在且为目录
-b 该路径是否存在且为block device
-c 该路径是否存在且为character device
-S 该路径是否存在且为Socket文件
-p 该路径是否存在且为PIPE文件
-L 该路径是否存在且为一个连结文件

路径的权限判断

举例:test -r filename

标志 意义
-r 判断路径是否存在且可以读
-w 判断路径是否存在且可写
-x 判断路径是否存在且可执行
-u 判断路径是否存在且具有SUID属性
-g 判断路径是否存在且具有SGID属性
-k 判断路径是否存在且具有sticky bit属性
-s 判断文档是否存在且为非空

两个文件之间比较

举例:test file1 -nt file2

标志 意义
-eq 两数值相等(不可以扩展到字符串比较)
-ne 两数值不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

判断字符串

标志 意义
test -z string 判断字符串是否为空
test -n string 判断字符串是否为非空
test str1 == str2 判断两字符串是否相等
test str1 != str2 判断两字符串是否不相等

多重条件判定

举例:test -r filename -a -x filename

标志 意义
-a and,两者判断成立的时候才返回true
-o or,两者条件成立一个就返回true
! not,相反才返回true,例如:test ! -x filename

判断符号[]

使用判断符号和使用使用test命令基本上是一样的,注意使用判断符号时的空格十分重要。举例[▢1▢lt▢2▢](▢表示空格符号),特别注意例子中所有的分隔都是通过空格间隔的,尤其是中括号相邻的空格符号一定要注意用上。标志使用和test命令的无差别。

参考资料

鸟叔的linux私房菜:http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#ex_cal

判断符号[]补充资料来源:https://blog.csdn.net/qq_41586263/article/details/83014853


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinzhtao@163.com

文章标题:shell中的判断式

文章字数:609

本文作者:捌叁壹伍

发布时间:2019-11-14, 20:21:57

最后更新:2019-11-17, 17:38:16

原始链接:http://qzt8315.github.io/2019/11/14/shell中的判断式/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏