算术运算符
算术运算符包括
+ - * / % ++ --
算术运算符是用于数值类型的计算,在shell中,算术运算符只能用于整数类型的计算,不能用于符点数类型的计算。
bash内置算术运算符语法
bash内置了以上所有的算术运算符,其中++ --
为后置自增和后置自减。
内置运算符的语法格式为
$((a+b))
$((a++))
注意,如下的脚本文件在第3行$((a++))
是会报错的,
#!/bin/bash
a=1
$((a++))
echo $a
执行结果如下:
./a.sh: line 3: 1: command not found
2
这是因为$((a++))
的效果是先返回1,再将a自增1,返回的1会被当成是一条命令,所以报1: command not found
,这和在shell提示符下执行 $(echo hello)
是一样的道理,会报hello: command not found
。所以我们要注意,一行代码,它是执行一条命令,还是我们要拿到这条命令的输出
不过,虽然会报错,但a的确已经自增了。看下面的代码及输出
#!/bin/bash
a=1
echo $((a++))
echo $a
输出:
1
2
示例
#!/bin/bash
a=1
b=2
echo $((a+b)) # 3
echo $((a-b)) # -1
echo $((a\*b)) # Error,去掉转义字符也出错
echo $((a/b)) # 0
echo $((a%b)) # 1
echo $((a++)) # 1
echo $a # 2
echo $((b--)) # 2
echo $b # 1
expr工具
我们还可以利用其他的命令进行算术运算,常用的命令有 expr
、awk
。这里,我们详细地介绍一下expr
,expr命令的用法可以执行expr --help
查看。
expr命令中的算术运算符也只能处理整数类型的运算,支持的算术运算符有(++
与--
运算符在expr --help
命令中未找到)
+ - * / %
下面给出expr
工具的用法示例(& |
另行查看使用方法),注意:运算符的左右一定要有一个空格
#!/bin/bash
a=1
b=2
echo $(expr $a + $b) # 3
echo $(expr $a - $b) # -1
echo $(expr $a \* $b) # 2 必须加上转义字符斜杠
echo $(expr $a / $b) # 0
echo $(expr $a % $b) # 1
let工具
示例
#!/bin/bash
a=1
b=2
let "sum=a+b"
let "difference=a-b"
let "production=a*b" # * 号无需转义
let "quotient=a/b"
let "remainder=a%b"
let "increment=a++"
let "decrement=b--"
echo $sum # 3
echo $difference # -1
echo $production # 2
echo $quotient # 0
echo $remainder # 1
echo $increment # 1
echo $decrement # 2
echo $a # 2
echo $b # 1
编程指引
在算术运算中,尽量采用expr工具与变量赋值的方式对变量进行操作,如
#!/bin/bash
a=1
b=2
a=$(expr $a + 1) # 变量自增
sum=$(expr $a + $b) # 求和并赋给新的变量
参考:
[1] https://bash.cyberciti.biz/guide/Perform_arithmetic_operations
Last updated
Was this helpful?