mm:来自shell提示符的ss计算器?

时间:2014-12-22 15:02:45

标签: linux bash shell time

从shell提示符中,用于计算mm:ss值的表达式的最少键击方法是什么? 4:33 + 0:20 - 2:45 = 2:08

这是用于交互式使用,不用于脚本,或测量经过的时间,或任何类似的东西。没有老鼠。没有GUI。

数千种语言中有数千种mm+60*ss(mmss/60, mmss%60)的实现。我可以用bash或ruby或C编写一个脚本来添加另一个实现。但是当它可能被埋在bcdcirb或甚至{{1}中的某处时,这个轮子似乎不需要重新发明。本身。

2 个答案:

答案 0 :(得分:3)

虽然不完美:

s="4:33 + 0:20 - 2:45"
n=$(sed 's/\([0-9]*\):\([0-9]*\)/(\1 * 60 + \2)/g' <<< "$s" | bc)
printf "%d:%02d\n" $(( $n / 60 )) $(( $n % 60 ))

sed命令将(4 * 60 + 33) + (0 * 60 + 20) - (2 * 60 + 45)输出到bc

输出为:2:08

答案 1 :(得分:0)

在提示的几个字符中不可能像这样计算时间。 你可以这样做:

date -d "4:33 + 2:22" +%H:%M

但你需要包括时区(以及如何计算时间),取输出,再次计算!不要超过24小时。所以这太荒谬了。 其中一种可能的解决方案是GNU / Units。它提供了一些常见组合的简写名称:

hms -> hours, minutes, seconds time -> years, days, hours, minutes and seconds

You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705

主页:http://www.gnu.org/software/units/