У меня есть 4 устройства UART, и я хочу смотреть их вывод одновременно. Для выполнения этой работы я использую следующий скрипт:Параллельный выход UART с линейным буфером
# first kill the cat process from last run
killall -v cat
for i in `seq 0 3`; do
cat /dev/crbif0rb0c$(i}ttyS0 | grep . --line-buffered &
# cat /dev/crbif0rb0c$(i)ttyS0 &
done
Но я не получаю никакого вывода из этого скрипта, кроме множества пустых строк. Когда я удаляю материал grep
и использую вторую строку в цикле for, я получаю много выходов, но не читаем, поскольку все выходы испорчены.
Так что мой вопрос: Почему нет вывода (кроме пустых строк), когда я использую grep? Или любой может предоставить лучшие (и выполнимые) решения для моего сценария?
Заранее благодарен!
[UPDATE] Я неожиданно обнаружил, что cat /dev/crbif0rb0c${i}ttyS0 | grep^--line-buffered &
будет работать. Не знаю, почему ...
Нет, это не работает. Нет вывода. –
Являются ли ваши UART-ы печатанием CR и/или LF? Поскольку вывод не будет напечатан до тех пор, пока он не закончит линию. – artbristol
Они печатают «\ n». Но неважно, проблема решена, заменив '.' на'^'в' grep'. –