shell 判断语句

判断语句

使用test来进行判断

# test [选项] 文件
test -d /Users/zhanghe/desktop/user/shell
---------------------


示例:
#如果该文件是目录则输出yes,否则输出no
test -d /Users/zhanghe/desktop/user/shell && echo yes || echo no

选项

按照文件类型判断

-d  判断文件是否存在,且为目录
-e  判断文件是否存在
-f  判断文件是否存在,且为普通文件
-s  判断文件是否存在,并且是否为非空文件
-b  判断文件是否为块设备文件
-c  判断文件是否为字符设备文件
-g  判断文件是否设置setgid位
-h  判断文件是否是符号链接
-L  判断文件是否为符号链接
-p  判断文件是否为管道文件
-u  判断文件是否设置setuid位

#
示例
test -s stu.txt

按照权限判断

-r 判断文件是否存在,且是否有读权限
-w 判断文件是否存在,且是否有写权限
-x 判断文件是否存在,且是否有执行权限

#
示例
test -w stu.txt

数值比较

-eq   等于
-ne   不等于
-gt   大于
-lt   小于
-ge   大于等于
-le   小于等于

#
示例
test 1 -eq 2

字符串比较

-z  判断字符串是否为空
-n  判断字符串是否非空
==  判断两个字符串是否相等
!=  判断两个字符串是否不等

#
示例
test "aa" == "ab"

逻辑判断

-a   逻辑与
-o   逻辑或
!    逻辑非

#
示例
test "aa" == "aa" -a "ab" == "aa"

上述的test可以使用[  ]来替代

如:

[ -s stu.txt ]

[ “aa” == “ab” ]

还有一种[[ 条件 ]]也可以进行条件判断,对于test和[]如果表达式包含特殊字符的话,需要进行转义,而对于[[ 条件 ]]则不需要理会特殊字符的影响,但是注意[[的后面和]]的前面都至少有一个以上的空格符才行

字符串包含

可以看到上述提供的只是基础的判断,那字符串包含如何进行判断呢

使用grep

if [[ -n `echo "abcd" | grep "ab"` ]]
then echo "包含"
fi

使用通配符

if [[ "abcd" == *ab* ]]
then echo "包含"
fi

https://zhhll.icu/2021/linux/shell/判断语句/


原文始发于微信公众号(bug生产基地):shell 判断语句

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/176532.html

(0)
java小白的头像java小白

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!