条件判断语法结构

条件判断语法结构

思考:何为真(true)?何为假(false)?

1. 条件判断语法格式

  • 格式1:test条件表达式
  • 格式2:[条件表达式]
  • 格式3:[[条件表达式]]支持正则 =-
特别说明:

1)[亲亲,我两边都有空格,不空打死你呦]
2)[[亲亲,我两边都有空格,不空打死你呦]
3)更多判断,man test 去查看,很多的参数都用来进行条件判断

2. 条件判断相关参数

问:你要判断什么?
答:我要判断文件类型,判断文件新旧,判断字符串是否相等,判断权限等等...

(一)判断文件类型
判断参数 含义
-e 判断文件是否存在(任何类型文件)
-f 判断文件是否存在并且是一个普通文件
-d 判断文件是否存在并且是一个目录
-L 判断文件是否存在并且是一个软连接文件
-b 判断文件是否存在并且是一个块设备文件
-S 判断文件是否存在并且是一个套接字文件
举例说明:
test -e file        只要文件存在条件为真
[ -d /shell01/dir1 ]  判断目录是否存在,存在条件为真
[ ! -d /shell01/dir1 ] 判断目录是否存在,不存在条件为真
[[ -f /shell01/1.sh]]   判断文件是否存在,并且是一个普通的文件
(二)判断文件权限
判断参数 含义
-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 小于
(五)判断字符串
判断参数 含义
-z 判断是否为空字符串,字符串长度为0则成立
-n 判断是否为非空字符串,字符串长度不为0则成立
string1 = string2 判断字符串是否相等
string1 != string2 判断字符串是否不等
(六)多重条件判断
判断符号 含义 举例
-a和&& 逻辑与 [ 1 -eq -a -ne 0 ] [ 1-eq q ]&&[ 1 -ne 0 ]
-o和|| 逻辑或 [ 1 -eq 1 -o 1 -ne 1 ] [ 1 -eq 1 ]

特别说明:
&& 前面的表达式为真,才会执行后面的代码
|| 前面的表达式为假,才会执行后面的代码
; 只用于分割命令或表达式
举例说明

  • 数值比较
    `
#[ $(id -u) -eq 0 ] && echo "the user is admin"
#[ $(id -u) -ne 0 ] && echo "the user is not admin"
#[ $(id -u) -eq 0 ]$$ echo "the user is admin" || echo "the user is not admin"
#uid='id -u'
#test $uid -eq 0 && echo this is admin
#[ $(id -u) -ne 0 ] || echo this is admin
#[ $(id -u) -eq 0 ] && echo this is admin || echo this is not admin

  • 类C风格的数值比较
注意:在(())中,=表示赋值;==表示判断
#((1==2));echo $?
#((1<2));echo $?
#((2>=1));echo $?
#((2!=1));echo $?
#((`id -u`==0));echo $?
#((a=123));echo $a
#unset a
#((a==123));echo $?

你可能感兴趣的:(条件判断语法结构)