一.算术运算符
shell | java | 说明 |
---|
‘expr $a - $b’ | a - b | 减法 |
‘expr $a + $b’ | a + b | 加法 |
‘expr $a * $b’ | a * b | 乘法 |
‘expr $a / $b’ | a / b | 除法 |
‘expr $a % $b’ | a % b | 取模(取余) |
‘expr $a = $b’ | a = b | 赋值 |
tips: '实际上要用` 1左边的那个符号,这里csdn自动会变成md关键字符 所以没办法表示
乘法需要用强转才能使用 比如* a
二.布尔运算符
shell | java | 说明 | 结果 |
---|
! | ! | 非(取反) | !true 的结果是false |
== | == | 全等 | 2 == 1 的结果是false |
!= | != | 不等 | 2 != 1 的结果是true |
-o | | | or | true -o false 的结果是true |
-a | & | and | true -a false 的结果是false |
三.逻辑运算符
shell | java | 说明 |
---|
|| | || | 逻辑的or |
&& | && | 逻辑的and |
[] 与[[ ]] 的区别:
[[ ]] 中逻辑组合可以使用 && || 符号
而[] 里面逻辑组合可以用 -a -o
类似三元运算:
[ condition ] && echo 1 || echo 2 :条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句
四.字符运算符
shell | java | 说明 |
---|
= | equals | 字符串判断是否相等 |
!= | !equals | 字符串判断是否不相等 |
-z | none | 检测字符串长度是否为0,为0返回 true |
-n | none | 检测字符串长度是否为0,不为0返回 true。 |
str | != null | 检测字符串是否为空,不为空返回 true。 |
none表示java没有相关表示
五.关系运算符
shell | java | 说明 |
---|
eq | == | 相等 |
ne | != | 不相等 |
-gt | > | 大于 |
-lt | < | 小于 |
-ge | >= | 大于等于 |
-le | <= | 小于等于 |
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
gt 是 greater than缩写
lt 是 less than 缩写
ge 是 greater than or equals 缩写
le 是 less than or equals 缩写
六、文件测试运算符
操作符 | 说明 | 举例 |
---|
-b file | 检测文件是否是块设备文件,如果是,则返回 true。 | [ -b $file ] 返回 false。 |
-c file | 检测文件是否是字符设备文件,如果是,则返回 true。 | [ -c $file ] 返回 false。 |
-d file | 检测文件是否是目录,如果是,则返回 true。 | [ -d $file ] 返回 false。 |
-f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回 true。 |
-g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 | [ -g $file ] 返回 false。 |
-k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | [ -k $file ] 返回 false。 |
-p file | 检测文件是否是具名管道,如果是,则返回 true。 | [ -p $file ] 返回 false。 |
-u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 | [ -u $file ] 返回 false。 |
-r file | 检测文件是否可读,如果是,则返回 true。 | [ -r $file ] 返回 true。 |
-w file | 检测文件是否可写,如果是,则返回 true。 | [ -w $file ] 返回 true。 |
-x file | 检测文件是否可执行,如果是,则返回 true。 | [ -x $file ] 返回 true。 |
-s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回 true。 |
-e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 | [ -e $file ] 返回 true。 |
变量 file 表示文件"/home/shell/relational_operation.sh",下面的代码,将检测该文件的各种属性:
#!/bin/bash
file="/home/shell/relational_operation.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ]
then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
if [ -d $file ]
then
echo "文件是个目录"
else
echo "文件不是个目录"
fi
if [ -s $file ]
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi
[root@whh shell]# chmod a+x File_test_operators.sh
[root@whh shell]# ./File_test_operators.sh
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在