我的expect
脚本很简单
#!/usr/bin/expect
set timeout 60
spawn docker run -it ubuntu:19.04
expect {
-re "root@[0-9]+:\/#"
}
send -- exit
expect eof
由于失败
$ expect script.expect
spawn docker run -it ubuntu:19.04
invalid command name "0-9"
while executing
"0-9"
invoked from within
"expect {
-re "root@[0-9]+:\/#"
}"
(file "script.expect" line 5)
我希望它能够成功,因为它是一个有效的Perl正则表达式,否则会失败并显示一条解释正则表达式错误的消息。似乎-re
正在尝试执行其他操作,而不是匹配没有任何意义的指定re。
我尝试转义我可以猜测的所有内容,而结果没有变化。
我正在Ubuntu 19.04上使用Expect 5.45.4。
期望是Tcl的扩展。 Tcl使用方括号代替命令。
此外,Tcl类似于shell,它允许在双引号内进行命令和变量替换。 Tcl的非插入引号是花括号(类似于外壳的单引号)。
请参见https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm
因此,您想将正则表达式括在大括号中:
expect -re {root@[0-9]+:/#}