Я работаю над встроенным сценарием bash для Linux (4.1.15), в котором битрейт CANbus может быть одним из нескольких возможных. Когда мой модуль подключается к сети, он появляется на первом битрейте в списке, проверяет трафик и, если трафика нет, циклически переключает каждый битрейт таким же образом, пока трафик не будет обнаружен.
Мой первоначальный подход состоял в том, чтобы сделать что-то вроде timeout -t 1 output=$(candump can0)
. Если вывод пустой, то битрейт неверный. Однако функция timeout
, по-видимому, не вызывает возврата из команды.
Мой второй подход состоял в том, чтобы попытаться сделать что-то с ip -details -statistics link show can0
. Хотя это и дает некоторую значимую информацию в одной дискретной команде, это не очень полезно, если нет возможности сбросить статистику.
Команда uname -rms
дает следующую информацию о версии системы: Linux 4.1.15 armv7l
Если кто-нибудь знает, как заставить любой из этих подходов работать, это будет отлично, или если вы знаете другой способ, я весь в ушах. Суть в том, что мне нужно найти способ сделать это с помощью скрипта bash.
( Моя команда тайм-аута не использует -t
, но, кажется, есть разные версии ). Поместив часть тайм-аута внутри $()
, он должен иметь возможность сигнализировать команду canbus
, и, по крайней мере, присваивание output
всегда должно создавать переменную.
output=$(timeout -t 1 candump can0)