shell中的判断式
前言
在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" 转载请保留原文链接及作者。