Linux

Shell - 数值运算

因为shell脚本是属于弱语言,没有变量类型的概念,所以定义变量会默认为字符串。就算看上去是一个数字,当直接进行计算时,就会出错:

x=1
echo $x+=1
# 输出1+=1,并不是自己想要的2

所以当我们需要进行数值运算时,我们需要一些特殊的方法,在Linex中提供了好几种方法。

1. 使用 $[]

x=1
echo $[$x+=1]

2. 使用 expr

expr为Linux中的一个命令,可以用于数值计算,也可以用于字符串操作:

x=1
expr 14 % 9
expr 10 + 10
expr $x + 1
# 使用乘号比较特殊,必须用反斜杠
expx $x * 3

使用expr也存在缺陷:进行计算的值只能为整数,得到的结果也会以整数形式返回。

3. 使用 (())

相比于$[]expr,这种方式功能比较强大:

  • 支持++,--操作
  • 支持多个表达式运算,用逗号分隔
  • 双括号可以进行逻辑运算,四则运算
  • 双括号结构拓展了for,while,if条件测试运算
  • 在双括号结构中,所有变量可以不加入$符号前缀
x=1
(( y = x + 1,z = y + 1 ))
echo $z
a=10
b=10
total=$((a*b))

4. 使用 let

var=1
# 这种写法运算符间不能有空格 
let "var+=1" 
let var+=1 
echo $var
原文地址:https://www.cnblogs.com/yisany/p/10338964.html