我目前有一个脚本监视来自com端口的回复。它当前有一个2秒的超时(read -t2),如果没有回复,则启动一个操作。目前,有一个问题,它达到超时意外。我想知道它到底有多想念它。有没有办法让它说花了多长时间才成功读到某个东西?我试图在增加超时值的同时避免一堆测试,并查看一致性。谢谢/dev/ttyS0;然后是xxxxx如果读取失败,则执行操作。
zte4gxcn1#
使用bash及其特殊变量SECONDS:
bash
SECONDS
SECONDS=0 read -t 2 < /dev/ttyS0 s=$SECONDS if [[ $s -lt 2 ]]; then echo "less than 2 seconds"; else echo "$s seconds"; fi
im9ewurl2#
read没有内置此功能,但您可以将其与time实用程序结合使用。例如,time read < /dev/ttyS0将阻塞,直到它从设备读取某些内容,然后打印呼叫所花费的总时间,包括等待所花费的时间。如果您想捕获到文件而不是在终端上显示:
read
time
time read < /dev/ttyS0
{ time read < /dev/ttyS0 ; } 2>time_result
如果你想在终端上显示 * 和 * 捕获在一个文件中:
{ time read < /dev/ttyS0 ; } 2> >( tee time_result )
2条答案
按热度按时间zte4gxcn1#
使用
bash
及其特殊变量SECONDS
:im9ewurl2#
read
没有内置此功能,但您可以将其与time
实用程序结合使用。例如,time read < /dev/ttyS0
将阻塞,直到它从设备读取某些内容,然后打印呼叫所花费的总时间,包括等待所花费的时间。如果您想捕获到文件而不是在终端上显示:
如果你想在终端上显示 * 和 * 捕获在一个文件中: