第一种,使用((表达式)) 或$((表达式)),如果用单小括号,代表包含的是系统命令
root@root:~# a=3
root@root:~# ((b=a+3))
root@root:~# echo $b
6
root@root:~# a=1
root@root:~# b=2
root@root:~# echo $(($a+$b))
3
root@root:~# echo $((3*(6%4)))
6
root@root:~# echo $((1 &&0))
0
第二种使用let
root@root:~# let "c=$a+4"
root@root:~# echo $c
7
使用expr表达式,注意空格和反引号
root@root:~# d=`expr 4 + 3`
root@root:~# echo $d
7
root@root:~# a=1
root@root:~# b=2
root@root:~# c=$(expr $a + $b) #注意+ 号左右两边必须有空格才有效
root@root:~# echo $c
3
放在$[ expression]中,这是bash的推荐的标准处理方法
root@root:~# a=4
root@root:~# b=$[$a-9]
root@root:~# echo $b
-5
在C风格的for循环中,则可以如下使用
root@root:~# for((a=1,b=10;a<=10;a++,b--))
do
((c=a*b))
echo "$c
"
done
10
18
24
28
30
30
28
24
18
10
浮点数运算,借助bc(bash计算器)运算
基本格式: variable=`echo "option;expression" | bc`
root@root:~# a=`echo "scale=4;3.25/3" | bc`
root@root:~# echo $a
1.0833
root@root:~# a=6.6
root@root:~# b=3.5
root@root:~# c=`echo "scale=5;$a/$b"|bc`
root@root:~# echo $c
1.88571
如果浮点表达是有多行,则可以放在多行计算
基本格式:
variable=`bc << EOF
options
statements
expressions
EOF
`
演示:
root@root:~# a=1.2
root@root:~# b=2.4
root@root:~# c=3.5
root@root:~# d=2
root@root:~# e=`bc << EOF
scale=4
ab=($a+$b)
cd=($c-$d)
ab+cd
EOF
`
root@root:~# echo $e
5.1
Shell中的变量默认都是字符串,可以看到:
root@root:~# a=1
root@root:~# b=2
root@root:~# c=$a+$b
root@root:~# echo $c
1+2
bash脚本中使用declare 声明变量
基本格式: declare [+/-] [选项] 变量名
选项:
- :给变量设定类型属性
+ :取消变量的类型属性
-i :将变量声明为整数型(int)
-x :将变量声明为环境变量
-p :显示指定变量的被声明的类型
#!bin/bash
a=1
b=2
c=$a+$b
declare -p a #此步输出 declare -- a="1"
export a
declare -p a #此步输出 declare -x a="1" a已为环境变量
declare -i c=$a+$b
echo $c #输出结果3
root@root:~# bash cmd
declare -- a="1"
declare -x a="1"
3
10.基本与或非运算,幂运算,模运算
root@root:~# echo $((1^0)) #异或
1
root@root:~# echo $((1^1))0
root@root:~# echo $((2 & 5)) #按位与
0root@root:~# echo $((2 && 5)) #逻辑与
1root@root:~# echo $((2 | 5)) #按位或
7root@root:~# echo $((2 || 5)) #逻辑或
1root@root:~# echo $[!2] #非运算
0root@root:~# echo $[!0]
1root@root:~# echo $((4%6)) #模运算
4root@root:~# echo $((2**3)) #幂运算
8`
原文:https://www.cnblogs.com/xhai/p/11369936.html