shell--计算漏水时长
来源:原创 更新时间:2018-10-01 16:00:32 编辑:jason 浏览:2760
某蓄水池有甲,丙两条进水管和乙,丁两条排水管,要灌满一池水,单开甲需要3个小时,单开丙管需要5小时 ,要排光一池水,单开乙管需要4小时,单开丁管需要6小时,现在池内有1/6池水,如果按照甲乙丙丁的顺序,循环开各水管,每次每管开一小时。问多少时间后水池开始溢水?
· [root@linuxbaodian scripts]# vim bc_water.sh · 1 #!/bin/bash · 2 <<eof · 3 某蓄水池有甲,丙两条进水管和乙,丁两条排水管,要灌满一池水,单开甲需要3个小时,单开丙管需要5小时 · ,要排光一池水,单开乙管需要4小时,单开丁管需要6小时,现在池内有1/6池水,如果按照甲乙丙丁的顺序> · ,循环开各水管,每次每管开一小时。问多少时间后水池开始溢出水? · 4 eof · 5 #define water speed · 6 a=`echo "scale=2;1/3"|bc` · 7 b=`echo "scale=2;1/4"|bc` · 8 c=`echo "scale=2;1/5"|bc` · 9 d=`echo "scale=2;1/6"|bc` · 10 e=`echo "scale=2;1/6"|bc` · 11 #define remaining water · 12 f=`echo "1-$e"|bc` · 13 #define every hour water speed · 14 g=$(echo "$a-$b+$c-$d"|bc) · 15 #define How long does it take to fill up · 16 jg=$(echo "$f/$g"|bc) · 17 #print result · 18 echo $jg · [root@linuxbaodian scripts]# sh bc_water.sh · 7 小时
方法2:
#!/bin/bash
export PATH=$PATH
. /etc/rc.d/init.d/functions
<<EOF
1,首先我们要确定出来这个水池的容量是多大,我们假设水池容量是max
那么max=3*j=5*b=4*y=6*d
甲的流速/分钟 = max/3/60
定义水满为1
定义一个现在水池里面水的容量
MIN=$(echo max / 6 | bc)
for j in seq 1 60
MIN=$(echo $max / 180 + MIN | bc )
TIME=$(echo )
meet () {
if [ $MIN -eq $max ];then
echo $time && exit 0
fi
}
EOF
<<R
#定义水满为100
当前的水量定为W
当前经历的时间为TIME分钟
R
#定义MIN的预先变量
MIN=$(awk 'BEGIN{printf"%.2f",100/6}')
echo $MIN
#甲每分钟的流速
lj=$(awk 'BEGIN{printf"%.2f",100/180}')
#乙每分钟的流速
ly=$(awk 'BEGIN{printf"%.2f",100/320}')
#丙每分钟的流速
lb=$(awk 'BEGIN{printf"%.2f",100/300}')
#丁每分钟的流速
ld=$(awk 'BEGIN{printf"%.2f",100/360}')
#定义判断水量是否达到1的函数,应为每个循环里面都要重复调用
meet_jia () {
TIME=$(expr $TIME + 1)
MIN=$(awk 'BEGIN{printf"%.2f","'$MIN'"+"'$1'"}')
if [ $(echo "$MIN >= 100" | bc) -eq 1 ];then
echo "scale=1;$TIME/60" | bc && break 2
fi
}
meet_jian () {
TIME=$(expr $TIME + 1)
MIN=$(awk 'BEGIN{printf"%.2f","'$MIN'"-"'$1'"}')
if [ $(echo "$MIN >= 100" | bc) -eq 1 ];then
echo "scale=1;$TIME / 60" | bc && break 2
fi
}
for ((a=1 ; a<2; a--))
do
for i in `seq 60`
do
meet_jia $lj
done
for i in `seq 60`
do
meet_jian $ly
done
for i in `seq 60`
do
meet_jia $lb
done
for i in `seq 60`
do
meet_jian $ld
done
done

标签: