shell学习之条件判断、多重条件判断

一、条件判断语句

1.条件判断语法格式:

 - 格式1: test 表达式
 - 格式2: [ 条件表达式 ]         
 - 格式3:[[ 条件表达式 ]] 支持正则
 注意:条件表达式与中括号之间有空格
      man test查看, 很多参数都可以用来进行条件判断
  • 格式1:
 echo $?为0,代表上一条命令为真,echo $?为1,代表上一条明林为假

在这里插入图片描述

  • 格式2:
    在这里插入图片描述
    在这里插入图片描述
  • 格式3:
    在这里插入图片描述

2.条件判断相关参数

【1】文件类型判断

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

文件类型判断

[ -f file1 ];echo $?         # 判断file1是否为普通文件 
[ -d file1 ];echo $?         # 判断file是否为目录
[-L file3 ];echo $?          # 判断file3是否为软链接 
[ ! -d dir1 ];echo $?        # 判断dir1是否不是目录
[[ -f file1 ]];echo $?       # 判断file1是否为普通文件
[ -e file1 ];echo $?         # 判断file1是否存在
  • 判断文件是否存在(任何类型文件)
    在这里插入图片描述
  • 判断文件是否存在并且是一个普通文件
    在这里插入图片描述
  • 判断文件是否存在并且是一个目录
    在这里插入图片描述
  • 判断文件是否存在并且是一个软链接文件:
    在这里插入图片描述
    当file1删除时,file4依然是一个软连接文件:
    在这里插入图片描述
    但此时file4不存在:
    在这里插入图片描述
    注意:判断软连接时,如果原文件不存在,-L并不能检测出。故需要先用-e判断文件是否有效(存在),随后再用-L判断此文件是否为一个软连接
    【2】:文件权限判断
-r当前用户对其是否有读权限
-w当前用户对其是否有写权限
-x当前用户对其是否有执行权限
-u当前用户对其是否有suid特殊权限(高级权限冒险位)
-g当前用户对其是否有guid特殊权限(高级权限强制位)
-k当前用户对其是否有o+t特殊权限(高级权限粘滞位)
  • 当前用户对其是否有读权限
    在这里插入图片描述
  • 当前用户对其是否有写权限
    在这里插入图片描述
  • 当前用户对其是否有执行权限
    在这里插入图片描述
  • 当前用户对其是否有suid特殊权限(高级权限冒险位)
    在这里插入图片描述
  • 当前用户对其是否有o+t特殊权限(高级权限粘滞位)
    注意:/tmp目录是linux系统中使用o+t权限的目录:
    在这里插入图片描述
    注意:/usr/bin/passwd是linux系统中使用u+s权限的文件:
    在这里插入图片描述

【3】文件新旧判断

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

注意:这里的新旧指的是文件的修改时间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【4】判断整数

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

在这里插入图片描述
注意: 反响单引号 `` ,代表获取命令的执行结果
在这里插入图片描述
【5】判断字符串

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重点:shell编程中,判断字符转书否相等,=和==均可。

3.多重条件判断

【1】-a 和 &&     逻辑与,全真则真
举例:[ -f /etc/passswd -a -f /etc/group] 
      [ -f /etc/passwd ] && [ -f /etc/group ]
【2】-o 和        || 逻辑或,全假则假
举例:[ -f /etc/passswd -o -f /etc/group ]
     [ -f /etc/passwd ] || [ -f /etc/group ]

注意:&& 前面的表达式为真,才会执行后面的代码, || 前面的表达式为假,才会执行后面的代码

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值