「4月日新计划更文活动」
运算符
- 算法运算符
- 关系运算符
- 逻辑运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
注意:bash不支持简单数学运算,可以通过其他方式实现
关系运算符
对比两个数之间是否相等
-eq对比两个数之间是否相等,相等返回ture,否则反之-ne对比两个数之间是否不相等,不相等返回true,否则反之- 注意:外面使用
[]括号
[$num -eq $num2]
[$num -ne $num2]
对比两个数之间左右大小
-gt对比左边的数是否大于右边的数( *> *),如果是,则返回true,否则反之-lt对比左边的数是否小于右边的数( *< *),如果是,则返回true,否则反之-ge对比左边的数是都大于等于右边的数( >=),如果是,则返回true,否则反之-le对比左边的数是否小于等于右边的数( <=),如果是,则返回true,否则反之- 注意:外面使用
[]括号
[$a -gt $b]
[$a -lt $b]
[$a -ge $b]
[$a -le $b]
逻辑运算符
- 逻辑运算符 :
&& - 定义:逻辑与运算符使用两个“
&”符号表示。当左右两侧的条件都为真时,结果为真
[[ $a -lt 100 && $b -gt 100 ]]
- 逻辑运算符:
|| - 定义:逻辑或运算符使用两个“
|”符号表示。当左右两侧的条件中至少有一个为真时,结果为真
[[ $a -lt 100 || $b -gt 100 ]]
- 逻辑运算符:
!
- 定义:逻辑非运算符使用一个“!”符号表示。它将原来的条件反转,即如果原来的条件为真,则结果为假;如果原来的条件为假,则结果为真
![[ $a -lt 100]]
布尔运算符
- 布尔运算内包含:非运算、或运算、与运算
- 非运算:
!用于取反条件的结果 - 或运算:
-o用于将两个条件连接起来,只要其中一个条件为真,就返回真 - 与运算:
-a用于将两个条件连接起来,只有当两个条件都为真时才返回真 - 注意:使用布尔运算符时,需要用方括号
[]或双括号[[]]将条件括起来
[ $a != $b ]
[ "$var" = "value" ] -o "$var2" -gt 10
[ "$var" = "value" ] -a "$var2" -gt 10
字符串运算符
=用于检测两个字符串是否相等,相等则返回true!=检测两个字符串是否不想等,不想等返回true-z检测字符串长度是否为0,为0返回true-n检测字符串长度是否不为0,不为0返回true$检测字符串是否不为空,不为空返回true
[a = b]
[a != b]
[-z a]
[-n a]
[$a]
文件测试运算符
-e filename检测文件是否存在,如果是,则返回 true-f filename检测文件是否为常规文件,如果是,则返回 true-d filename检测文件是否为目录,如果是,则返回 true-r filename检测文件是否可读,如果是,则返回 true-w filename检测文件是否可写,如果是,则返回 true-x filename检测文件是否可执行,如果是,则返回 true-s filename检测文件是否为空,如果是,则返回 truefilename1 -ef filename2检测文件是否为同一文件,如果是,则返回 true-L filename检测文件是否为符号链接,如果是,则返回 truefilename1 -nt filename2检测文件的修改时间是否比另一个文件新,如果是,则返回 truefilename1 -ot filname2检测文件的修改时间是否比另外一个文件旧,如果是,则返回 true-u filename检测文件的UID是否为有效用户ID,如果是,则返回 true-k filename检测文件是否具有粘滞位,如果是,则返回 true-g filename检测文件的GID是否为有效组ID,如果是,则返回 true-t filename检测文件的权限是否有粘滞位,如果是,则返回 true-s filename检测文件是否为空,如果是,则返回 true-b filename检测文件是否为块设备文件,如果是,则返回 true-S filename检测文件是否为套接字文件,如果是,则返回 true-p filename检测文件是否为FIFO文件,如果是,则返回 true
[-e filename]
[-f filename]
[-d filename]
[-r filename]
[-w filename]
[-x filename]
[-s filename]
[filename1 -ef filename2]
[-L filename]
[filename1 -nt filename2]
[filename1 -ot filname2]
[-u filename]
[-k filename]
[-g filename]
[-t filename]
[-s filename]
[-b filename]
[-S filename]
[-p filename]