Shell 运算
Bash 支持算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。
[TOC]
算数运算符
let
命令
let
命令let a=1+1
echo ${a}
只支持整数。
expr
命令
expr
命令# 注意运算符左右空格
# 注意乘法
expr 1 + 1
expr 3 - 2
expr 2 \* 3
expr 8 / 4
expr 3 % 2
同样只支持整数。
bc
命令
bc
命令echo "1.1+1.1" | bc
echo "8/3" | bc
echo "scale=3; 8/3" | bc
# 2.666
支持整数和小数。
$[]
、$(())
$[]
、$(())
echo $[1+1]
echo $((1+1))
a=1
b=2
echo $[${a}+${b}]
# 或省略 {}
echo $[a+b]
只支持整数。
关系运算符
运算符
意义
-eq
两个数是否相等,相等返回 true。
-ne
两个数是否相等,不相等返回 true。
-gt
左边的数是否大于右边的,如果是,则返回 true。
-lt
左边的数是否小于右边的,如果是,则返回 true。
-ge
左边的数是否大等于右边的,如果是,则返回 true。
-le
左边的数是否小于等于右边的,如果是,则返回 true。
布尔运算符
运算符
意义
!
非运算,表达式为 true 则返回 false,否则返回 true。
-o
或运算,有一个表达式为 true,则返回 true。
-a
与运算,两个表达式都为 true 才返回 true。
字符串运算符
运算符
意义
=
检测两个字符串是否相等,相等返回 true。
!=
检测两个字符串是否相等,不相等返回 true。
-z
检测字符串长度是否为 0,为 0 返回 true。
-n
检测字符串长度是否为 0,不为 0 返回 true。
str
检测字符串是否为空,不为空返回 true。
文件测试运算符
运算符
意义
-b
检测文件是否是块设备文件,如果是,则返回 true。
-c
检测文件是否是字符设备文件,如果是,则返回 true。
-d
检测文件是否是目录,如果是,则返回 true。
-f
检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。
-g
检测文件是否设置了 SGID 位,如果是,则返回 true。
-k
检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。
-p
检测文件是否是具名管道,如果是,则返回 true。
-u
检测文件是否设置了 SUID 位,如果是,则返回 true。
-r
检测文件是否可读,如果是,则返回 true。
-w
检测文件是否可写,如果是,则返回 true。
-x
检测文件是否可执行,如果是,则返回 true。
-s
检测文件是否为空(文件大小是否大于 0),不为空返回 true。
-e
检测文件(包括目录)是否存在,如果是,则返回 true。
Last updated
Was this helpful?