ещё какой-то спецсимвол окончания
echo в конце сама добавляет перевод строки, так что \r или \n ни к чему.
Вывод возвращается в форме строк в конце которых идут символы с кодами 0D 1B 45 это перевод строки, ESC и буква Е соответственно, почему так читает read не пойму. Потому что в minicom все без этой мешуры срабатывает.
Теперь другой вопрос вам.
А вы не разжуёте мне. Я никак в толк не возьму что это за line ?
вроде встроенная команда читающая строку на STDIN до символа перевод строки, это я вычитал
а как тогда $line понимать?
Поправьте мои мысли.
в цикле while do команда read -r (raw данные, т.е. игнорирует спецсимволы и символы перевода строки)
читает данные из устройства /dev/ttyS0 и передает их переменной line ? (но line подсвечивается как например команда echo в MCeditor !!!)
потом делается do echo $line и содержимое переменной вываливается в вывод на экран если скрипт запущен в консоле.
И так далее построчно пока не закончится файл, а он у нас не заканчивается .... ))) но как выйти из этого я вроде уже догадался.
Так line в данном случае команда или переменная???
Пользователь добавил сообщение 18 Марта 2017, 15:23:37:
Так line в данном случае команда или переменная???
это просто переменная, переименовав её в lin ничего не изменилось, так же работает.
у меня прогресс
#!/bin/sh
#echo "show Address IP4Address InterfaceAddresses/wan_ip">/dev/ttyS0
#cat /dev/ttyS0 | read -r -N 500 NAME
#echo $NAME
echo "show Address IP4Address InterfaceAddresses/wan_ip">/dev/ttyS0
while read lin
do if echo "$lin" | grep -q 'Active'
then
<------>break
fi
done </dev/ttyS0
echo "${lin}"
сработал и таки выдал мне
заветную строку с IP адресом.
код то работает. Но глюк тот (см выше) который связан с тем, что в вывод который
выдает железка, как я говорил ранее, попадает ей на опять вход как команды,
а так как скорость 9600 всего, то происходит это ооочень мендленно, и когда я в течении пяти секунд
успеваю подключиться по minicom после отработки скрипта, я вижу как валяться эти команды последние несколько секунд.
Как же это так получается?если запускать скрипт повторно раньше чем весь этот мусор успеет обработать железка, то все перемешиватся
и процесс висит не давая разультат, на что я наткнулся ранее.
А если запустить повторно попозже, то все отрабатывает норм. Можно конечно так оставить, железке это не повредит, но как то криво получается.
Интересно это фича железки или в скрипте моем что то заложено не так?PS. железка DLINK Firewall dfl210 и если она перезагружается то выдает на com порт данные сама (без скиптов)
при этом эту инфу она за свои команды не воспринимает, даже если к порту ничего не подключено.