我想写一个简单的bash脚本。输入是" HH:mm"字符串和输出是该时间的剩余秒数,例如
$ getsec.sh 12:55 # now it's 12:30. so 25 minutes left.
1500
我认为使用date
命令可能会解决这个问题。但似乎它并不存在我可以使用的简单方法。
(检查一些答案后添加)
看起来date
命令取决于操作系统和版本
我使用OSX,建议答案的结果如下。
$ date -d '12:55' '+%s'
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
答案 0 :(得分:2)
* BSD(以及OSX)date
命令具有与GNU date
不同的选项语法,GNU now=$(date -j +%s)
then=$(date -j -f '%H:%M' 12:55 +%s)
echo "$((then-now)) seconds left"
在Linux上无处不在,可在许多其他平台上使用(包括OSX,Homebrew,Fink,等)。
demo
对于便携式解决方案,可以改用便携式脚本语言。
答案 1 :(得分:1)
你可以这样做:
ts=$(date -d '12:55' '+%s')
now=$(date '+%s')
diff=$((ts-now))
答案 2 :(得分:1)
此脚本接受目标时间作为命令行参数(在脚本中作为参数$1
#!/bin/bash
current_time=$(date +%s)
target_time=$(date +%s --date="$1")
# evaluate the difference using an arithmetic expression
echo "seconds remaining to target time: "$(( target_time - current_time ))
用法:
% ./get_sec.sh "22:00"
输出:
seconds remaining to target time: 16151