从shell提示符中,用于计算mm:ss值的表达式的最少键击方法是什么?
4:33 + 0:20 - 2:45 = 2:08
?
这是用于交互式使用,不用于脚本,或测量经过的时间,或任何类似的东西。没有老鼠。没有GUI。
数千种语言中有数千种mm+60*ss
和(mmss/60, mmss%60)
的实现。我可以用bash或ruby或C编写一个脚本来添加另一个实现。但是当它可能被埋在bc
,dc
,irb
或甚至{{1}中的某处时,这个轮子似乎不需要重新发明。本身。
答案 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