欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-24 22:21:21
...

一、条件判断语句

1.条件判断语法格式:

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

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

  • 格式2:
    shell学习之条件判断、多重条件判断
    shell学习之条件判断、多重条件判断
  • 格式3:
    shell学习之条件判断、多重条件判断

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是否存在
  • 判断文件是否存在(任何类型文件)
    shell学习之条件判断、多重条件判断
  • 判断文件是否存在并且是一个普通文件
    shell学习之条件判断、多重条件判断
  • 判断文件是否存在并且是一个目录
    shell学习之条件判断、多重条件判断
  • 判断文件是否存在并且是一个软链接文件:
    shell学习之条件判断、多重条件判断
    当file1删除时,file4依然是一个软连接文件:
    shell学习之条件判断、多重条件判断
    但此时file4不存在:
    shell学习之条件判断、多重条件判断
    注意:判断软连接时,如果原文件不存在,-L并不能检测出。故需要先用-e判断文件是否有效(存在),随后再用-L判断此文件是否为一个软连接
    【2】:文件权限判断
-r 当前用户对其是否有读权限
-w 当前用户对其是否有写权限
-x 当前用户对其是否有执行权限
-u 当前用户对其是否有suid特殊权限(高级权限冒险位)
-g 当前用户对其是否有guid特殊权限(高级权限强制位)
-k 当前用户对其是否有o+t特殊权限(高级权限粘滞位)
  • 当前用户对其是否有读权限
    shell学习之条件判断、多重条件判断
  • 当前用户对其是否有写权限
    shell学习之条件判断、多重条件判断
  • 当前用户对其是否有执行权限
    shell学习之条件判断、多重条件判断
  • 当前用户对其是否有suid特殊权限(高级权限冒险位)
    shell学习之条件判断、多重条件判断
  • 当前用户对其是否有o+t特殊权限(高级权限粘滞位)
    注意:/tmp目录是linux系统中使用o+t权限的目录:
    shell学习之条件判断、多重条件判断
    注意:/usr/bin/passwd是linux系统中使用u+s权限的文件:
    shell学习之条件判断、多重条件判断

【3】文件新旧判断

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

注意:这里的新旧指的是文件的修改时间。
shell学习之条件判断、多重条件判断
shell学习之条件判断、多重条件判断
shell学习之条件判断、多重条件判断
【4】判断整数

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

shell学习之条件判断、多重条件判断
注意: 反响单引号 `` ,代表获取命令的执行结果
shell学习之条件判断、多重条件判断
【5】判断字符串

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

shell学习之条件判断、多重条件判断
shell学习之条件判断、多重条件判断
shell学习之条件判断、多重条件判断
重点: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 ]

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

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

上一篇:

下一篇: