一、算数运算符
1)常见算数运算符
运算符 | 说明 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
=、+=、-=、*=、/=、%= | 赋值 |
++、-- | 自增、自减 |
2)常见运算命令
运算命令 | 说明 |
---|---|
$(()) | 整数运算,效率高,不支持浮点型和字符串等 |
let | 整数运算后赋值 |
expr | 可用于整数运算,还有其它额外功能 |
$[] | 整数运算 |
bc | Linux下的一个计算器程序,可用于整数及小数运算 |
awk | 可用于整数及小数运算 |
declare | 定义变量值和属性,-i参数可用于定义整形变量,做运算 |
实例:
#!/bin/bash
a=1
b=2
echo $((a+b)) #输出3
let c=a+b
echo $c #输出3
let c+=1
echo $c #输出4
echo $[a+b] #输出3
echo `expr $a + $b` #输出3
echo $a+$b|bc #输出3
使用expr命令运算时注意:
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。
- 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边
- 乘号(*)前边必须加反斜杠(\)才能实现乘法运算
二、比较运算符
1)数字比较
运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true。 |
-ne | 检测两个数是否不相等,不相等返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 |
>、<、>=、<=、==、!= | 使用 (( )) |
2)字符串比较
运算符 | 说明 |
---|---|
=、== | 检测两个字符串是否相等,相等返回 true。 |
!= | 检测两个字符串是否相等,不相等返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 |
-n | 检测字符串长度是否为0,不为0返回 true。 |
$ | 检测字符串是否为空,不为空返回 true。 |
字符串比较时请使用引号,防止空字符出现意外,比如当 a="" 时,[ -n $a ] 结果为true
三、逻辑运算符
运算符 | 说明 |
---|---|
! | 非运算 |
-o | 或运算,[ ] |
-a | 与运算,[ ] |
|| | 或运算,[[ ]] |
&& | 与运算,[[ ]] |
实例
#!/bin/bash
a=1
b=2
if [ $a -eq $b -o $a -gt $b ]
then
echo 'a 大于或者等于 b'
else
echo 'a 小于 b'
fi
#输出 “a 小于 b”
if [[ $a -eq $b || $a -gt $b ]]
then
echo 'a 大于或者等于 b'
else
echo 'a 小于 b'
fi
#输出 “a 小于 b”
四、文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
操作符 | 说明 |
---|---|
-b file | 检测文件是否是块设备文件,如果是,则返回 true。 |
-c file | 检测文件是否是字符设备文件,如果是,则返回 true。 |
-d file | 检测文件是否是目录,如果是,则返回 true。 |
-f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 |
-g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 |
-k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 |
-p file | 检测文件是否是有名管道,如果是,则返回 true。 |
-u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 |
-r file | 检测文件是否可读,如果是,则返回 true。 |
-w file | 检测文件是否可写,如果是,则返回 true。 |
-x file | 检测文件是否可执行,如果是,则返回 true。 |
-s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 |
-e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 |
-S file | 判断某文件是否 socket |
-L file | 检测文件是否存在并且是一个符号链接 |