| 运算符 |
说明 |
| + |
加法 |
| - |
减法 |
| * |
乘法 |
| / |
除法 |
| == |
相等 |
| != |
不相等 |
#!/bin/bash
a=10
b=20
echo "a + b = `expr $a + $b`"
echo "a - b = `expr $a - $b`"
echo "a * b = `expr $a \* $b`"
echo "a / b = `expr $a / $b`"
echo "a % b = `expr $a % $b`"
if [ $a == $b ]; then
echo "a == b"
else
echo "a != b"
fi
输出:
a + b = 30
a - b = -10
a * b = 200
a / b = 0
a % b = 10
a != b
- 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如
awk 和 expr。expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
- 表达式和运算符之间要有空格
$a + $b 写成 $a+$b 不行
- 条件表达式要放在方括号之间,并且要有空格
[ $a == $b ] 写成 [$a==$b] 不行
- 乘号(*)前边必须加反斜杠()才能实现乘法运算
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
| 运算符 |
说明 |
-eq |
两数是否相等 |
-ne |
两数是否不相等 |
-gt |
左数是否大于右数 |
-lt |
左数是否小于右数 |
-ge |
左数是否大于等于右数 |
-le |
左数是否小于等于右数 |
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]; then
echo "a == b"
else
echo "a != b"
fi
| 运算符 |
说明| |
| && |
逻辑的 AND |
| || |
逻辑的 OR |
#!/bin/bash
a=10
b=20
if [[ $a -gt 5 && $b -le 20 ]]; then
echo "a > 5 and b <= 20"
else :
fi
| 运算符 |
说明| |
| = |
两个字符串是否相等 |
| != |
两个字符串是否不相等 |
| -z |
字符串长度是否为 0 |
| -N |
字符串长度是否不为 0 |
| str |
字符串是否不为空 |
#!/bin/bash
a="abc"
b="edf"
c=""
if [ $a = $b ]; then
echo "$a = $b : a == b"
fi
if [ -n $a ]; then
echo "-n $a: The string $a's length is not 0"
fi
if [ !$c ]; then
echo "$c: The string $c is empty"
fi
| 运算符 |
说明| |
-e |
文件存在 |
-f |
表示文件是个一般文件,不是目录也不是设备文件 |
-s |
文件大小不为 0 |
-d |
表示是一个目录 |
-b |
表示是一个块设备(软盘,光驱等) |
-c |
表示是一个字符设备(键盘,声卡等) |
-p |
表示是一个管道 |
-h |
表示是符号链接 |
-L |
表示是符号链接 |
-S |
表示是一个 socket |
-r |
文件是否可读 |
-w |
文件是否可写 |
-x |
文件是否可执行 |
-N |
从文件上一次读取到现在,是否有改动 |
f1 -nt f2 |
文件 f1 比 文件 f2 新 |
f1 -ot f2 |
文件 f1 比 文件 f2 旧 |
f1 -ef f2 |
文件 f1 和 文件 f2 是否是相同文件的硬链接 |