Пытаюсь сообразить скрипт, который подключается к железке (самоделка на основе микроконтроллера) через COM-порт, используя cu (из UUCP), и вводит несколько команд с параметрами. параметры команд берутся из массивов. Пример:
#!/bin/sh
function test {
expect << EOF
set timeout 5
spawn cu -l /dev/ttyUSB0 #соединение
send "t\r" #команда проверки соединения, ответ должен быть "ОК"
expect "OK" #соединение установлено
expect "command:" #промпт
send "a $1\n" #первая команда с аргументом
expect "command:" #промпт
send "b $2\n" #вторая команда с аргументом
expect "command:" #промпт
send "~.\r" #попытка разорвать соединение
expect "Disconnected." #ожидаемый ответ на разрыв
EOF
}
a=(0 1)
b=(90 100)
test ${a[1]} ${b[1]} > logfile.txt
test ${a[2]} ${b[2]} >> logfile.txt
exit 0
В общем, пытаюсь установить соединение с девайсом, накидать туда комманд с параметрами из массива, результат вывести в файл. Пытаюсь вынести процесс передачи команд в функцию «test» с параметрами. Пока в скрипте только два её вызова, но хочу вызывать её из цикла, относительно количества элементов в массивах a и b.
command: - это промпт железки.
Первый вызов функции прокатывает, второй нет. в терминале получаю вывод:
expect: spawn id exp6 not open
while executing
"expect "command:""