Как говорит thrig, вы должны прочитать файл напрямую. Кроме того, используя cat
, как говорит Джон, в конце файла будет новая строка, и это станет\r\n
(возвратом каретки -, новой строкой )при переходе через pty spawn
. Таким образом, вы можете изменить свой шаблон регулярного выражения, чтобы захватывать только эти символы:
expect -re "(5.*)\r\n"
set VERSION $expect_out(1,string)
Обратите внимание, как мы запрашиваем индекс 1, захват ()
, а не 0, совпадение всего шаблона.
Кроме того, вы можете удалить пробел с помощью команды tcl
set VERSION [string trim $expect_out(0,string)]
Обратите внимание: вы путаете шаблоны glob и regexp в строке ожидания :5.*.*
, поскольку шаблон glob будет соответствовать вашему стилю ввода 5.x.x . Использование -re
означает, что вы должны просто использовать регулярное выражение 5.*
, которое соответствует всем до конца.