Shell 运算

Bash 支持算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。

[TOC]

算数运算符

let 命令

let a=1+1
echo ${a}

只支持整数。

expr 命令

# 注意运算符左右空格
# 注意乘法
expr 1 + 1
expr 3 - 2
expr 2 \* 3
expr 8 / 4
expr 3 % 2

同样只支持整数。

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。

Shell 算数运算

Shell运算符

Last updated

Was this helpful?