shell中的数学运算
运算符号:
+,- 加减
*,/,% 乘,除,取余
** 幂运算
++,-- 自增 自减
<,<=,>,>= 比较符号(逻辑运算,通过比较得到真假逻辑结果)
=,+=,-=,*=,/=,%= 赋值运算
a=1+1 默认会被shell识别为可变长字符,而不是整型数的运算
因此,下面是shell中的常用的运算命令
常用的运算命令:
(( )) 用于整数运算
let 用于整数运算,与(( ))类似
expr 用于整数运算,功能相对较多
bc 计算器,好处是可以计算小数(而前面的那些运算只能运算整数)
$[ ] 整数运算 等同于(( )) (内部写入要进行的运算,该运算符内部才会被识别为整型数据运算)
$( ) 执行动作 等同于` `
${ } 声明变量
四则运算的复合赋值符号:
((J+=I))
((J-=I))
((J*=I))
((J/=I))
示例:
a=1+1
echo $a
((a=1+1))
echo $a
a=$[1+1]
echo $a
a=$(date)
echo $a
c=1
a=${c}b
echo $a
let a=1+1
echo $a
expr 1 + 1 运算符两边必须有空格
echo`expr 1 + 1`
bc
1+1
3+4
ctrl+c 打断bc命令并退出
bc <<EOF
1.1+2.3
EOF
下图为例:
图一为以上运算命令的执行效果演示
图二,三,四为自增自减运算,以及加减乘除的复合赋值运算的执行结果。




简单应用示例:
1分10秒的倒计时
#!/bin/bash
SEC=10
MIN=1
ALL_TIME=$[60*$MIN+$SEC]
forr ((;ALL_TIME>0;ALL_TIME--))
do
SEC=$[ALL_TIME%60]
MIN=$[$ALL_TIME/60]
echo -ne "After $MIN:$SEC is end"
echo -ne "\r"
sleep 1
done
928

被折叠的 条评论
为什么被折叠?



