由于shell的所有变量默认都是字符型,所以shell的算术运算需要对变量进行特殊声明.
var1=1
var2=2
var3={var1}+{var2}
echo ${var3}
以上代码输出的结果是1+2
,可以看到只是单纯的字符串拼接,并没有做任何的算术运算.
decalre
若要参与运算,可以使用命令declare
.
declare
usage:
declare [-aAfFgilnrtux] [-p] [name[=value] …]
– -:给变量设定类型属性;
– +:取消变量的类型属性;
– -a:将变量声明为数组型;
– -i:将变量声明为整数型(integer);
– -r:将变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过 +r 取消只读属性;
– -x:将变量声明为环境变量;
– -p:显示指定变量的被声明的类型;
var1=1
var2=2
declare -i var3={var1}+{var2}
echo ${var3}
expr
也可以使用命令expr
进行运算.
var1=1
var2=2
# 运算符前后必须要有空格
var3=(expr{var1} + {var2})
echo{var3}
let
还能使用命令let
进行运算.
var1=1
var2=2
# 运算符前后不能有空格
let var3={var1}+{var2}
echo ${var3}
$(())和$[]运算方式
使用$(())
:
var1=1
var2=2
var3=(({var1} + {var2}))
echo{var3}
使用$[]
:
var1=1
var2=2
var3=[{var1} + {var2}]
echo{var3}