在 Bash 中,时间间隔字符串通常表示为 HH:MM:SS
或 MM:SS
格式,其中 HH
表示小时,MM
表示分钟,SS
表示秒。将这种格式的时间间隔字符串转换为秒数(nr)的过程就是将这些时间单位分别转换为秒并相加。
时间间隔字符串的类型主要有两种:
HH:MM:SS
MM:SS
对于 HH:MM:SS
格式的时间间隔字符串,可以使用以下 Bash 脚本进行转换:
#!/bin/bash
time_str="02:30:45"
IFS=':' read -ra ADDR <<< "$time_str"
seconds=$((10#$ADDR[0]*3600 + 10#$ADDR[1]*60 + 10#$ADDR[2]))
echo $seconds
对于 MM:SS
格式的时间间隔字符串,可以使用以下 Bash 脚本进行转换:
#!/bin/bash
time_str="30:45"
IFS=':' read -ra ADDR <<< "$time_str"
seconds=$((10#$ADDR[0]*60 + 10#$ADDR[1]))
echo $seconds
原因:可能是由于输入的时间字符串格式不正确,或者在计算过程中出现了类型转换错误。
解决方法:
HH:MM:SS
或 MM:SS
。10#
前缀确保数字被正确解析为十进制数,避免八进制解析错误。IFS=':' read -ra ADDR <<< "$time_str"
seconds=$((10#$ADDR[0]*3600 + 10#$ADDR[1]*60 + 10#$ADDR[2]))
通过以上方法,可以确保时间间隔字符串正确转换为秒数。
领取专属 10元无门槛券
手把手带您无忧上云