Asterisk:如何将时间转换为秒

Asterisk: How to convert time to seconds

我只想打印 9 美元超过一小时的任何结果
我如何将其转换为秒数? 所以我可以使用 3600sec 进行检查。

9 美元 = 通话时长 00:00:00

asterisk -rx "core show channels verbose" | awk ' > "01:00:00"' | awk ' == "Dial"' | wc -l > test.txt

您可以简单地从格式 hh:mm:ss 中提取 hour minutesec,如下所示:

h=$(echo "" | cut -d":" -f1)
m=$(echo "" | cut -d":" -f2)
s=$(echo "" | cut -d":" -f3)

因为您现在手边已经有了 h ms 值,您可以像这样将其转换为秒数:

totalsec=$(echo "$h*3600+$m*60+$s"|bc)

如果您只需要检查几个小时,请使用 $h

正如有人提到的,最简单的事情是检查时间的前两位数是否不是“00”。像这样:

asterisk -rx "core show channels verbose" | awk ' !~ /00:..:../ &&  == "Dial"' | wc -l

这意味着它将匹配并记录“01:00:00”,这可能不是您想要的:-(。它匹配“大于或等于一小时的 $9”。

这将符合您的 "greater than" 条件:

asterisk -rx "core show channels verbose" | awk ' !~ /00:..:../ &&  != "01:00:00" &&  == "Dial"' | wc -l