shell条件判断

条件判断语法

test 条件表达式
[ 条件表达式 ] #两边要有空格
[[ 条件表达式 ]] #支持正则,两边要有空格

判断文件类型

判断参数含义
-e判断文件是否存在
-f判断文件是否存在并且是一个普通文件
-d判断文件是否存在并且是一个目录
-L判断文件是否存在并且是一个软链接文件,但是不能判断是否有效 ([ -e file1 -a -L file1] )
-b判断文件是否存在并且是一个块设备文件
-S判断文件是否存在并且是一个套接字文件
-c判断文件是否存在并且是一个字符设备文件
-p判断文件是否存在并且是一个命名管道文件
-s判断文件是否存在并且是一个非空文件
test -e ./file1 #当前目录有没有file1文件
[ -e ./file1 ]
echo $? #上面代码执行不管有没有文件都没显示,只能这样看,0为存在,非0为不存在
[ ! -d ./dir1 ] #不存在为真

判断文件权限

判断参数含义
-r当前用户对其是否可读
-w当前用户对其是否可写
-x当前用户对其是否可执行
-u是否有suid,高级权限冒险位
-g是否有sgid,高级权限限制位
-k是否有t位,高级权限沾滞位(意思是只有文件创建者和root用户可以删除)
test -r l.sh;echo $?

判断文件新旧(文件修改时间)

判断参数含义
file1 -nt file2比较file1是否比file2新
file1 -ot file2比较file1是否比file2旧
file1 -ef file2比较是否为同一个文件(索引号相不相同),或者用于判断硬链接,是否指向同一个inode
test file1 -nt file2;echo $?

判断整数

判断参数含义
-eq相等
-ne不等
-gt大于
-lt小于
-ge大于等于
-le小于等于
[1 -eq 2];echo $?

判断字符串

判断参数含义
-z判断是否为空字符串,字符串长度为0则成立,空格也是字符
-n判断是否为非空字符,字符串长度不为0则成立
str1 = str2判断字符串是否相等
str1 != str2判断字符串是否不相等
test -z 'sss';echo $?
test 'hello' = 'world';echo $?
a="hello";b="world"
[ "$a" = "$b" ];echo $? # = 和 == 在[字符串]里都表示判断

多重条件判断

判断符号含义举例
-a和&&逻辑与[1 -eq 1 -a 1 -ne 0] , [1 -eq 1] && [1 -ne 0]
-o和11逻辑或[1 -eq 1 -o 1 -ne 1]

&&:当前面表达式为真,才会执行后面的代码
||:当前表达式为真,就不会执行后面的代码

在这里插入图片描述
类C风格的数值比较

#在(())里面 == 为判断 = 为赋值
((1==2));echo $?

[] 与 [[]] 的区别

a= #空
[ $a = hello ] #报错,下面才对
[ "$a" = "hello" ]
[[ $a = hello ]] #不报错

[ 1 -eq 1 && 1 -eq 1 ] #报错,下面才是对的
[ 1 -eq 1 && 1 -eq 1 ] 
[[ 1 -eq 1 && 1 -eq 1 ]] #不报错 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值