你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
nccloud
浮点数计算:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。1、bc#!/bin/bash#加f=$(echo "4.3+2.5"|bc)echo "4.3+2.5=$f"#减f=$(echo "4.3-2.5"|bc)echo "4.3-2.5=$f"#乘f=$(echo "4.30*2.50"|bc)echo "4.3*2.5=$f"#除f=$(echo "4.3/2.5"|bc)echo "4.3/2.5=$f"#混合运算f=$(echo "2.2/(2.2-1.1)*2+1.1"|bc)echo "2.2/(2.2-1.1)*2+1.1=$f"2、awk#!/bin/bash#加f=$(awk 'BEGIN{print 4.5+3.4 }')echo "4.5+3.4=$f"#减f=$(awk 'BEGIN{print 4.5-3.4 }')echo "4.5-3.4=$f"#乘f=$(awk 'BEGIN{print 4.5*3.4 }')echo "4.5*3.4=$f"#除f=$(awk 'BEGIN{print 4.5/3.4 }')echo "4.5/3.4=$f"#混合f=$(awk 'BEGIN{print (4.5-3.4)*2+3 }')echo "(4.5-3.4)*2+3=$f"
整数计算
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
实例:
ts_ymd=$(date "+%Y%m%d")ts_ymd=`date +%s -d "$ts_ymd"`
license_time=$(cat /data/tools/projects.list |grep $ser| awk -F " " '{print $34}') license_time=`date +%s -d "$license_time"` #left_days=$((${license_time}-${ts_ymd})) left_days_ts=`expr ${license_time} - ${ts_ymd}` left_days=$(($left_days_ts/86400)) alter_limit=2592000 #echo "${license_time}-${ts_ymd}=${left_days_ts}" if [ "$left_days_ts" -lt "$alter_limit" ] then sed -i "/$xiangmu/d" $bad_logs echo "$xiangmu的授权还有:$left_days天到期。" >> $bad_logs bad_status=1 fi
取绝对值
if [ $abs -lt 0 ]; then let abs=0-$abs;fi
代码4-2 数学运算实例:\源文件\04\4.4.sh#!/bin/bash#4.4.shs=0 #定义一个求和变量,初值为0。t=`expr$1**$2` #用expr改变运算顺序,求x的y次方。t=$[t*3] #t乘以3。s=$[s+t] #结果相加。t=$[$1**2] #求x的平方。t=$[t*4] #结果乘以4。s=$[s+t] #结果相加。t=`expr$2*5` #求5y的值。s=$[s+t] #结果相加。s=$[s+6] #结果加上6。echo$s #输出结果。echo$((a%b)) #取余
【shell】整数运算,小数运算
1.整数运算
【demo01】expr
typeset x=10
typeset y=2
n1=`expr $x + $y`
n2=`expr $x - $y`
n3=`expr $x \* $y` #使用expr时 符号* 需要转义
n4=`expr $x / $y`
n5=`expr $x % $y`
echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5
【demo02】小括号
((n1=$x+$y))
((n2=$x-$y))
((n3=$x*$y))
((n4=$x/$y))
((n5=$x%$y))
echo $(($x+$y))
echo $(($x-$y))
echo $(($x*$y))
echo $(($x/$y))
echo $(($x%$y))
说明:((n1=$x+$y)) 等价于 n1=`expr $x + $y`
【demo03】中括号
echo $[$x+$y]
echo $[$x-$y]
echo $[$x*$y]
echo $[$x/$y]
echo $[$x%$y]
【demo04】let
let n1=$x+$y
let n2=$x-$y
let n3=$x*$y
let n4=$x/$y
let n5=$x%$y
2.小数运算
【demo01】awk
#!/bin/bash
echo `awk -v x=2.45 -v y=3.123 'BEGIN{printf "%.2f\n",x*y}'`
typeset num=3.123
echo `awk -v x=2.45 -v y=$num 'BEGIN{printf "%.2f\n",x*y}'`
说明:awk的变量可以自定义,也可以从外部获取。
【demo02】|bc
typeset n1=$(echo "scale=3; 6 / 5" | bc)
typeset n2=`echo "scale=3; 6 / 5" | bc`
typeset x=6
typeset y=5
typeset z=1.5
typeset n3=$(echo "scale=3;$x / $y" | bc)
typeset n4=$(echo "scale=3;$z / $y" | bc)
typeset n5=$(echo "scale=3;$x * $y" | bc)
echo"3/2" | bc #取整 echo"3+2" | bc #快速计算
echo"3+2" | bc #快速计算
字符串转数字:echo "96.56"| awk '{print int($0)}'
要回复问题请先登录或注册
8 个回复
nccloud
浮点数计算:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。
1、bc
#!/bin/bash
#加
f=$(echo "4.3+2.5"|bc)
echo "4.3+2.5=$f"
#减
f=$(echo "4.3-2.5"|bc)
echo "4.3-2.5=$f"
#乘
f=$(echo "4.30*2.50"|bc)
echo "4.3*2.5=$f"
#除
f=$(echo "4.3/2.5"|bc)
echo "4.3/2.5=$f"
#混合运算
f=$(echo "2.2/(2.2-1.1)*2+1.1"|bc)
echo "2.2/(2.2-1.1)*2+1.1=$f"
2、awk
#!/bin/bash
#加
f=$(awk 'BEGIN{print 4.5+3.4 }')
echo "4.5+3.4=$f"
#减
f=$(awk 'BEGIN{print 4.5-3.4 }')
echo "4.5-3.4=$f"
#乘
f=$(awk 'BEGIN{print 4.5*3.4 }')
echo "4.5*3.4=$f"
#除
f=$(awk 'BEGIN{print 4.5/3.4 }')
echo "4.5/3.4=$f"
#混合
f=$(awk 'BEGIN{print (4.5-3.4)*2+3 }')
echo "(4.5-3.4)*2+3=$f"
nccloud
整数计算
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
nccloud
实例:
ts_ymd=$(date "+%Y%m%d")
ts_ymd=`date +%s -d "$ts_ymd"`
license_time=$(cat /data/tools/projects.list |grep $ser| awk -F " " '{print $34}')
license_time=`date +%s -d "$license_time"`
#left_days=$((${license_time}-${ts_ymd}))
left_days_ts=`expr ${license_time} - ${ts_ymd}`
left_days=$(($left_days_ts/86400))
alter_limit=2592000
#echo "${license_time}-${ts_ymd}=${left_days_ts}"
if [ "$left_days_ts" -lt "$alter_limit" ]
then
sed -i "/$xiangmu/d" $bad_logs
echo "$xiangmu的授权还有:$left_days天到期。" >> $bad_logs
bad_status=1
fi
nccloud
取绝对值
if [ $abs -lt 0 ]; then
let abs=0-$abs;
fi
nccloud
代码4-2 数学运算实例:\源文件\04\4.4.sh
#!/bin/bash
#4.4.sh
s=0 #定义一个求和变量,初值为0。
t=`expr$1**$2` #用expr改变运算顺序,求x的y次方。
t=$[t*3] #t乘以3。
s=$[s+t] #结果相加。
t=$[$1**2] #求x的平方。
t=$[t*4] #结果乘以4。
s=$[s+t] #结果相加。
t=`expr$2*5` #求5y的值。
s=$[s+t] #结果相加。
s=$[s+6] #结果加上6。
echo$s #输出结果。
echo$((a%b)) #取余
nccloud
【shell】整数运算,小数运算
1.整数运算
【demo01】expr
typeset x=10
typeset y=2
n1=`expr $x + $y`
n2=`expr $x - $y`
n3=`expr $x \* $y` #使用expr时 符号* 需要转义
n4=`expr $x / $y`
n5=`expr $x % $y`
echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5
【demo02】小括号
typeset x=10
typeset y=2
((n1=$x+$y))
((n2=$x-$y))
((n3=$x*$y))
((n4=$x/$y))
((n5=$x%$y))
echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5
echo $(($x+$y))
echo $(($x-$y))
echo $(($x*$y))
echo $(($x/$y))
echo $(($x%$y))
说明:((n1=$x+$y)) 等价于 n1=`expr $x + $y`
【demo03】中括号
typeset x=10
typeset y=2
echo $[$x+$y]
echo $[$x-$y]
echo $[$x*$y]
echo $[$x/$y]
echo $[$x%$y]
【demo04】let
typeset x=10
typeset y=2
let n1=$x+$y
let n2=$x-$y
let n3=$x*$y
let n4=$x/$y
let n5=$x%$y
echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5
2.小数运算
【demo01】awk
#!/bin/bash
echo `awk -v x=2.45 -v y=3.123 'BEGIN{printf "%.2f\n",x*y}'`
typeset num=3.123
echo `awk -v x=2.45 -v y=$num 'BEGIN{printf "%.2f\n",x*y}'`
说明:awk的变量可以自定义,也可以从外部获取。
【demo02】|bc
#!/bin/bash
typeset n1=$(echo "scale=3; 6 / 5" | bc)
typeset n2=`echo "scale=3; 6 / 5" | bc`
typeset x=6
typeset y=5
typeset z=1.5
typeset n3=$(echo "scale=3;$x / $y" | bc)
typeset n4=$(echo "scale=3;$z / $y" | bc)
typeset n5=$(echo "scale=3;$x * $y" | bc)
echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5
nccloud
nccloud
字符串转数字:echo "96.56"| awk '{print int($0)}'