1.shell中的变量是不分数据类型的,统一按照字符串来存储
2. bash shell只能支持数学整数运算(zsh可以支持浮点)
3.以下都是在bash shell 下进行的数学运算
方法一使用方括号进行基本的整数运算:
#!/bin/bash
var1=1
var2=2
var=$[$var1+$var2]
echo "var=$var"
输出结果:
xiewenhao@Zienon:~/xwh$ ./bc.sh
var=3
解决bash shell 中无法计算浮点数的方法使用bc
基本格式:var =`echo "options;expresstion " |bc`
#!/bin/bash
var1=1
var2=2
var=`echo "scale=4;$var1+$var2"|bc`
echo "var=$var"
输出结果:
xiewenhao@Zienon:~/xwh$ ./bc.sh
var=3
以上只是适用较短的运算,如果有多个表达式这种方式就会有点问题,针对这个问题的解决方案就是重定向
基本格式:var=`bc<<EOF
options
statements
expresstions
EOF
`
#!/bin/bash
var1=1
var2=2
var3=3
var4=4
var=`bc<<EOF
scale=4
a=($var1+$var2)
b=($var3+$var4)
a+b
EOF
`
echo "var=$var"
输出结果:
xiewenhao@Zienon:~/xwh$ ./bc.sh
./bc.sh: line 25: warning: here-document at line 18 delimited by end-of-file (wanted `EOF')
(standard_in) 6: illegal character: O
(standard_in) 6: syntax error
var=10