我正在尝试从日志文件中匹配包含“”的文本。但它不匹配。 我理解“”对TCL / Expect有特殊意义。
因此我尝试了以下,但没有运气。
expect -ex {
"lp -c -demail -ot\\\"firstname_surname@gmail.com\\\" /usr/local/spool/pf"
{
incr logged
send_user "\r\n LOGGED #4, $logged \r\n"
}
timeout
我尝试使用\,\和\\但没有运气。
任何人都可以帮忙,请..
我的日志文件包含以下行
exec [lp -c -demail -ot"firstname_surname@gmail.com" /usr/local/spool/pf/context/ABC001-1209236.mime]
我需要匹配那条线。
答案 0 :(得分:2)
使用{}
引号,类似于shell的单引号。此外,Tcl对换行符很敏感,因此您必须将块的左括号放在前一行
expect {
{lp -c -demail -ot"firstname_surname@gmail.com" /usr/local/spool/pf} {
incr logged
send_user "\r\n LOGGED #4, $logged \r\n"
}
timeout
}
答案 1 :(得分:1)
我不得不使用*,临时修复。 但如果有人能告诉我如何匹配文本中的“”,那就太棒了。
我的临时解决方法是,
expect {
"lp -c -demail -ot*/usr/local/spool/printform" {
}
}
答案 2 :(得分:1)
如果您准确匹配某些内容,只需将该字符串括在{
大括号}
中。但是,您的代码也存在另一个问题:将-ex
放在外面,您告诉expect
将整个批次(包括您的响应代码!)作为字符串进行匹配。如果这是你想要的,我会非常震惊!移动块内的标志(这适用于Expect的expect
和相关命令)并使用您正在寻找的文字字符串,而不是试图反复猜测反斜杠的数量。你应该得到这样的东西:
expect {
-ex {exec [lp -c -demail -ot"firstname_surname@gmail.com" /usr/local/spool/pf/context/ABC001-1209236.mime]} {
incr logged
send_user "\r\n LOGGED #4, $logged \r\n"
}
timeout
}