shell 加减乘除运算
((i=$j+$k))
格式:let “I = I + 1” 或 let i=i+1 示例:
root@ubuntu:# i=3
算术运算符 Shell中常用的数学运算符,指的是可以在程序中实现加、减、乘、除等数学运算的运算符。 +:对两个变量做加法。 -:对两个变量做减法。 *:对两个变量做乘法。 /:对两个变量做除法。 **:对两个变量做幂运算。 %:取模运算,第一个变量除以第二个变量求余数。 +=:加等于,在自身基础上加第二个变量。 -=:减等于,在第一个变量的基础上减去第二个变量。 *=:乘等于,在第一个变量的基础上乘以第二个变量。 /=:除等于,在第一个变量的基础上除以第二个变量。 %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。 在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输出1+2的结果。 echo 1+2 Shell并没有输出结果3,而是输出了1+2。在shell中有三种方法可以更改运算顺序。 方法1: 用expr改变运算顺序 可以用echo `expr 1 +2`来输出1+2的结果,用expr表示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引号,而是“Tab”键上面的那个符号。 方法2: 用let指示数学运算(没成功) 可以先将运算的结果赋值给变量b,运算命令是b=let 1 + 2。然后用echo $b来输出b的值。如果没有let,则会输出1+2。 方法3: 用$[]表示数学运算 将一个数学运算写到$[]符号的中括号中,中括号中的内容将先进行数学运算。例如命令echo $[1+2],将输出结果3,又如命令 echo $[2 * 4] 将输出 8 下面是一个shell程序实例,实现数学函数S=3(xy)+4×2+5y+6的运算。在程序中以位置变量的方式输入x与y的值。程序的编写步骤如下所示。
数学运算实例:cal_num.sh #!/bin/bash #cal_num.sh # Copyright by mimvp.com
s=0
t=`expr$1**$2`
t=$[t*3]
s=$[s+t]
t=$[$1**2]
t=$[t*4]
s=$[s+t]
t=`expr$2*5`
s=$[s+t]
s=$[s+6]
echo$s
echo$((a%b))
chmod +x 4.4.sh
./4.4.sh 2 4
90
shell 除法技巧 shell计算中使用除法,基本默认上都是整除。比如: num1=2 num2=3 num3=`expr $num1 / $num2` 这个时候num3=0 , 因为是因为expr不支持浮点除法 解决的方法1: num3=`echo “sclae=2; $num1/$num2″ | bc` 使用bc工具,sclae控制小数点后保留几位 解决的方法2: awk ‘BEGIN{printf “%.2f\n”,’$num1‘/’$num2‘}’ 如果用百分比表示 awk ‘BEGIN{printf “%.2f%\n”,(’$num1‘/’$num2‘)*100}’
shell 乘除运算 示例: #!/bin/bash # mimvp.com # 2015-02-06 log='youku_monitor_disk.log' MB=`expr 1024 \* 1024` GB=`expr 1024 \* 1024 \* 1024` dtime=$(date "+%Y-%m-%d__%H:%M:%S") echo "========= $dtime =========" df -m echo "" disk_total_MB=`df -hm | grep data1 | awk '{print $2}'` disk_used_MB=`df -hm | grep data1 | awk '{print $3}'` disk_used_GB=`expr $disk_used_MB / 1024` disk_used_TB=`expr $disk_used_GB / 1024` disk_used_GB_2=`echo "scale=2; $disk_used_MB / 1024" | bc` disk_used_TB_2=`echo "scale=2; $disk_used_GB / 1024" | bc` disk_used_GB_3=`awk 'BEGIN{printf "%.2f", '$disk_used_MB' / 1024}'` disk_used_TB_3=`awk 'BEGIN{printf "%.2f", '$disk_used_GB' / 1024}'` disk_used_ratio=`awk 'BEGIN {printf "%.2f%", '$disk_used_MB' / '$disk_total_MB' * 100}'` echo "MB : $MB" echo "GB : $GB" echo "disk_total_MB : $disk_total_MB" echo "disk_used_MB : $disk_used_MB" echo "disk_used_ratio : $disk_used_ratio" echo "disk_used_GB : $disk_used_GB" echo "disk_used_TB : $disk_used_TB" echo "disk_used_GB_2 : $disk_used_GB_2" echo "disk_used_TB_2 : $disk_used_TB_2" echo "disk_used_GB_3 : $disk_used_GB_3" echo "disk_used_TB_3 : $disk_used_TB_3" 运行结果:
========= 2015-02-06__10:55:15 =========
MB : 1048576 转载请保留固定链接: https://linuxeye.com/program/2214.html |