我创建了一个带有时间选项参数的z shell脚本。 (例如: - 时间00:03:30)我希望用户能够以HH:MM:SS以外的格式输入时间。我的脚本已经可以将HH:MM:SS转换为秒(这是最终结果需要的),但HH:MM:SS格式很笨重。所以,我创建了一个函数,将另一种格式(#h#m#s)转换为原始格式:
if [ "$(echo "$1" | grep -E "([[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms][[:digit:]]+[hms])")" ]; then
if [ "$(echo "$1" | grep "h")" ]; then
H="$(echo "$1" | sed -E 's|.*([[:digit:]]+)h.*|\1|')"
else
H=00
fi
if [ "$(echo "$1" | grep "m")" ]; then
M="$(echo "$1" | sed -E 's|.*([[:digit:]]+)m.*|\1|')"
else
M=00
fi
if [ "$(echo "$1" | grep "s")" ]; then
S="$(echo "$1" | sed -E 's|.*([[:digit:]]+)s.*|\1|')"
else
S=00
fi
echo "$H:$M:$S" | sed -Ee 's|:([[:digit:]]):|:0\1:|' -e 's|^([[:digit:]]):|0\1:|' -e 's|:([[:digit:]])$|:0\1|'
fi
是的,我已经创建了自己的解决方案。我来这里找一个更好的。另外,如果您知道可以转换为秒的任何其他格式,请告诉我们。
答案 0 :(得分:0)
这是你想要的吗?
% zmodload zsh/datetime
% echo $(( $(strftime -r '%H:%M:%S' 01:01:12) - $(strftime -r '%H:%M:%S' 0:0:0) ))
3672