文章封面

bash 中的基本运算符

发布于 2020-04-06 04:22:44阅读量 587

1 算数运算符

运算符 说明
+ 加法
- 减法
* 乘法
/ 除法
== 相等
!= 不相等
#!/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 不支持简单的数学运算,但是可以通过其他命令来实现,例如 awkexprexpr 最常用。
  • expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
  • 表达式和运算符之间要有空格 $a + $b 写成 $a+$b 不行
  • 条件表达式要放在方括号之间,并且要有空格 [ $a == $b ] 写成 [$a==$b] 不行
  • 乘号(*)前边必须加反斜杠()才能实现乘法运算

2 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

运算符 说明
-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

3 逻辑运算符

运算符 说明|
&& 逻辑的 AND
|| 逻辑的 OR
#!/bin/bash
a=10
b=20

if [[ $a -gt 5 && $b -le 20 ]]; then
  echo "a > 5 and b <= 20"
else :
fi

4 字符串运算符

运算符 说明|
= 两个字符串是否相等
!= 两个字符串是否不相等
-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

5 文件操作符

运算符 说明|
-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 是否是相同文件的硬链接

发布时间:2020-04-06 04:22:44

版权信息:非商用-署名-自由转载

推荐阅读

暂无推荐

    评论

    编辑器努力加载中...