Похожие вопросы

Linux ip route: как сделать так, чтобы весь внешний трафик шел через один интерфейс
Как запустить команду " cat " в фоновом режиме внутри скрипта
Как настроить задание Jenkins на определенный сервер для развертывания?
Debian 9: bash: ls, cat, команда не найдена после неправильного изменения пути
как удалить файл в /etc при rc.sysinit выполняются?
Расширение Brace, похоже, не работает в Bash 3.2.51 на Mac OS X
Синтаксический анализ файла из определенной строки в bash на Linux
Проблемы при выполнении perl на git для Windows bash
Имейте файл с именем ~ (Тильда) в моем домашнем каталоге
Обнаружение известного компьютера в общедоступной сети в BASH
Добавить псевдоним.mylongwebsiteaddress в конец строки в cygwin
Выполнить git pre-commit Хук только если файлы в определенном каталоге изменены
Как установить переменные среды в GitLab CI docker runner?
Пакетная сортировка песен в каталоге по исполнителю в Unix [закрыто]
Отправка имитированных нажатий клавиш в Bash

Bash: получение сообщений от фонового процесса

Я посылаю данные через cansend до vcan0, в то же время я слушаю сообщения, которые были отправлены vcan0 С помощью candump vcan0 command

по какой-то причине я не буду получать никаких сообщений при отправке данных в vcan0 через скрипт, но когда я отправляю данные через терминал, скрипт как-то получает данные.

cansend vcan0 004#0152FEE400000000 # trying to send data (doesnt work)
while true;
do
  msg_candump=$(candump vcan0) # read vcan0
  if [[ ${#msg_candump} > 1 ]]; then #received msg
    echo $msg_candump
  fi
done
5
задан david114
источник

1 ответов

вы используете хэш-символ # в качестве данных для отправки, но этот символ зарезервировано для комментариев в оболочках

попробуйте так:

( # Let run listener in background before trying to send to CAN
  while true;
  do
    msg_candump="$(candump vcan0 -T 1000)" # read CAN for 1 second
    if [[ ${#msg_candump} > 1 ]]; then #received msg
      echo "$msg_candump"
    fi
    sleep 0.025 # Give system a little breath
  done
) &
PID=$!

cansend vcan0 '004#0152FEE400000000' # <- quotes are matter 
sleep 5
kill -9 $PID
1
отвечен Alex 2018-08-30 13:23:47
источник

Другие вопросы bash command-line command-line-tool shell