草稿 · 2022年5月1日 0

草稿: Shell条件判断

判断格式的两种写法:
第一种:
使用test加条件参数来判断文件

test  [条件选项]  [文件]

第二种:
使用中括号加条件参数来判断文件

[ [条件选项] [文件] ]

文件类型判断:

示例:

  • 判断文件是否存在
[ -e test.txt ] && echo yes || echo no 
    -b 文件           判断文件存在并且是块设备文件为真
    -c 文件           判断文件存在并且是字符设备为真
    -d 文件           判断文件存在并且为目录为真
    -e 文件           判断文件存在为真
    -f 文件           判断文件存在并且是普通文件为真
    -L 文件           判断文件存在并且是符号链接文件为真
    -p 文件           判断文件存在并且是管道文件为真
    -s 文件           判断文件是否存在并且内容是非空为真
    -S 文件           判断文件是否存在并且是套接字文件为真

文件权限判断:

    -r 文件           判断文件权限存并且是否有读权限为真
    -w 文件           判断文件存在并且是否有写权限为真
    -x 文件           判断文件存在并有执行权限为真
    -u 文件           判断文件权限并且有SUID权限为真
    -g 文件           判断文件存在并且拥有SGID权限为真
    -k 文件           判断文件存在并且权限为真Sbit权限为真

新旧inode比较:

文件1 -nt 文件2     判断文件1的修改时间是否比文件2的新为真
文件1 -ot 文件2     判断文件1的修改时间是否比文件2的旧为真
文件1 -ef 文件2     判断文件1与文件2的inode号一致为真

数值判断:

数字1 -eq 数字2     两个值相等为真
数字1 -ne 数字2     两个不值相等为真
数字1 -gt 数字2     值1大于值2为真
数字1 -lt 数字2     值1小于值2为真
数字1 -ge 数字2     值1大于等于值2为真
数字1 -eq 数字2     值1小于等于值2为真

字符判断:

-z 字符串                  空字符串为真
-n 字符串                  非空字符串为真
字符1 == 字符2              两个字符串相等为真
字符1 != 字符2              两个字符串不相等为真

多重判断:

示例:

  • 判断1是等于1及1是否等于2
[ 1 -eq 1 -a 1 -eq 2 ]&&echo yes || echo no
判断1 -a 判断2          两个判断都成立为真
判断1 -o 判断2          两个判断有一个成立为真
! 判断                逻辑非,使原始判断式取反