5.Shell之条件判断

小破站学习笔记

条件判断语法结构

true 真 
false 假

格式1 test 条件表达式
格式2 [条件表达式]
格式3 [[条件表达式]] 支持正则

[] [[]] 两边都要有空格

判断什么
判断文件类型
判断文件新旧
判断字符串是否相等
判断是否为空

判断文件类型

-e 	判断文件是否存在(任何类型文件)
-f 	判断文件是否存在并且是一个普通文件
-d 	判断文件是否存在并且是一个目录
-L 	判断文件是否存在并且是一个软链接文件
-b 	判断文件是否存在并且是一个块设备文件
-S 	判断文件是否存在并且是一个套接字文件
-c 	判断文件是否存在并且是一个字符设备文件
-p 	判断文件是否存在并且是一个命名管道文件
-s 	判断文件是否存在并且是一个非空文件(有内容)

经常常用的

-f 判断文件是否存在并且是一个普通文件
-d判断文件是否存在并且是一个目录
-s 判断文件是否存在并且是一个非空文件(有内容)

判断文件权限

-r 	当前用户对其是否可读
-w 	当前用户对其是否可写
-x 	当前用户对其是否可执行
-u 	是否有suid,高级权限冒险位
-g 	是否有sgid,高级权限强制位
-k 	是否有t位,高级权限粘滞位

判断文件新旧

修改时间

file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧
file1 -ef file2 比较是否为同 一个文件,或者用于判断硬链接,是否指向同一个inode

判断整数

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

判断字符串

-z 判断是否为空字符串,字符串长度为0则成立
-n 判断是否为非空字符串,字符串长度不为0则成立
string1 = string2 判断字符串是否相等
string1 != string2 判断字符串是否不相等

-z “hello world” 引号引起来

多重条件判断

-a 和 && 逻辑与  多个条件同时满足 
-o 和 || 	逻辑或  其中任意一个满足

[ 1 -eq 1 -a 1 -eq 0 ]
[ 1 -eq 1 ] && [ 1 -eq 0 ]
[ 1 -eq 1 -o 1 -eq 0 ]
[ 1 -eq 1 ] || [ 1 -eq 0 ]

&&	 前面表达式为真,才会执行后面的代码
||  前面表达式为假,才会执行后面的代码
;	只用于分割命令或者表达式

这个应该很实用

举例
判断当前用户是不是普通用户

id -u

获取uid

[ $(id -u) -eq 0 ] && echo "admin"

前面为真才会打印admin

[ $(id -u) -eq 0 ] || echo "is not admin"

前面为假才会打印is not admin

数值比较

类C风格 在(())里,==代表判断 =代表赋值

字符比较

" "双引号引起来,看作一个整体;=== 在 [ 字符串 ] 比较中都表示判断

[] [[]] 有什么区别

字符串判断
[ “字符串” = “字符串2” ]

[[ 字符串 = 字符串2 ]]
可以不加引号""

还有就是在用-a && 的时候 细节问题

逻辑运算符总结

符号;&& || 都可以用来分割命令或者表达式
;分号完全不考虑前面语句是否执行正确 都会执行;后面的语句
&& 符号 需要考虑&&前面语句的正确性,前面语句正确才会执行&&后面的内容;反之亦然
|| 符号 需要考虑||前面语句的非正确性,前面语句执行错误才会执行||后面的语句
如果&&||同时出现,从左往右依次,按上面规则来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值