Проблема в том, что ваш реальный шаблон "\$.*>"
соответствует буквально , а не как регулярное выражение.Вам нужно передать флаг -re
, чтобы этот шаблон соответствовал RE, например, так (я использовал больше строк, чем ;
символов, так как я думаю, что это понятнее, но YMMV там):
expect {
timeout {
puts "Running ....."
exp_continue
}
eof {
puts "EOF occured"
exit 1
}
-re {\$.*>} {
puts "Finished.."
exit 0
}
}
Это также действительно хорошая идея помещать регулярные выражения в {
фигурные скобки }
, если вы можете, поэтому последовательности с обратной косой чертой (и другие метасимволы Tcl) внутрине подставляйся.Вам не нужно ... но 99,99% всех случаев лучше.