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
本文由 mdnice 多平台发布
本文来自博客园,作者:拾光师,转载请注明原文链接:https://www.cnblogs.com/life-time/p/17864262.html 个人博客-> https://zhhll.icu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~