![Bash:确定 CANbus 比特率是否配置正确](https://linux22.com/image/175260/Bash%EF%BC%9A%E7%A1%AE%E5%AE%9A%20CANbus%20%E6%AF%94%E7%89%B9%E7%8E%87%E6%98%AF%E5%90%A6%E9%85%8D%E7%BD%AE%E6%AD%A3%E7%A1%AE.png)
我正在开发一个嵌入式 Linux (4.1.15) bash 脚本,其中 CANbus 的比特率可能是几种可能性之一。当我的模块上线时,它会以列表中的第一个比特率出现,检查流量,如果没有流量,则以类似的方式循环遍历每个比特率,直到检测到流量。
我最初的方法是做类似的事情timeout -t 1 output=$(candump can0)
。如果输出为空,则比特率不正确。但是,该timeout
函数似乎并没有强制从命令返回。
我的第二种方法是尝试用ip -details -statistics link show can0
.虽然这确实在单个离散命令中产生了一些有意义的信息,但如果无法重置统计信息,它就不是很有用。
该命令uname -rms
生成有关系统的版本信息:Linux 4.1.15 armv7l
如果有人知道如何使这些方法中的任何一种发挥作用,那就太好了,或者如果您知道另一种方法,我洗耳恭听。最重要的是,我需要找到一种使用 bash 脚本来执行此操作的方法。
答案1
(我的超时命令没有使用-t
,但似乎有不同的版本)。通过将超时部分放在 中$()
,它应该能够向canbus
命令发出信号,并且至少对 的赋值output
应该始终创建变量。
output=$(timeout -t 1 candump can0)