#linux #bash #serial-port
#linux #bash #последовательный порт
Вопрос:
Мне нужно выполнить перевод идентификаторов объектов объемом около 500 тыс., полученных через SNMP нового коммутатора в проекте. такой объем работы может быть выполнен только с помощью скрипта, поэтому я написал этот короткий скрипт bash для выполнения работы, но я получаю сообщение об ошибке «замена команды: строка 33: синтаксическая ошибка возле неожиданного токена ‘amp;’ Это скрипт bash:
#! /bin/bash
#...some code to check arguments here
input=$1
shift
output=$1
#open the connection
`stty -F /dev/ttyACM0 115200 raw`
`exec 3</dev/ttyACM0>$output` # trying to redirect serial port output to file
`cat <amp;3 >> amp;output` # trying to append output of serial, ERROR HERE
while read line;
do
echo "getMib $line">/dev/ttyACM0
done<$input
echo done with file $input
Комментарии:
1. Лол… В Linux все является файлом, пока это не перестанет быть файлом. Это тот случай, когда это больше не файл… Вы знаете, какой файл теряет свои данные… Вы должны запустить программу чтения для модема в фоновом режиме. Затем выполняется запись на модем с помощью интерактивного сеанса. Мне было так противно пытаться использовать оболочку для выполнения простого чтения / записи, что я сдался и перешел на программу на Си. Программа на C была на порядки проще.
2. -jww можете ли вы опубликовать фрагмент кода?
3. Не должно
amp;output
быть$output
, как в строке выше?4. Бен Фойгт, это правильно, это ускользнуло от меня .. завтра в лаборатории, надеюсь, это сработает
5. Вы не хотите выполнять строки, напечатанные этими командами, поэтому вам следует удалить все обратные ссылки. Это также должно устранить проблему, потому что
cat
и его перенаправление выполняется в другой подоболочке, отличной от той, где вы настраиваете перенаправление ввода.