2016-11-29 1 views
2

expect 스크립트의 정규 표현식 처리에 약간의 의아해합니다. 생성 된 실행 파일은 Press [Enter] to continue:과 같은 텍스트를 포함한 여러 메시지를 다시 보냅니다. 다음과 같이 처리해야한다고 생각했습니다.Enter의 특별한 의미 : expect -re "계속하려면 [Enter ]를 누르십시오."는 작동하지 않습니다.

spawn /tmp/install.run --prefix /opt --mode text 

expect { 
    timeout { send_user "\nFailure to initiate license view\n"; exit 1 } 
    eof { send_user "\nGeneral error\n"; exit 1 } 
    -re "Press \[Enter\] to continue:" { send "\r" } 
} 

그러나 스크립트는 되돌아 오는 텍스트를 인식하지 않습니다. 이 정규식을 사용하는 경우에만 작동합니다 : "Press .Enter\] to continue:".

expect 스크립트에 Enter 키워드에 대한 특별한 내용이 있습니까?

답변

3

{} 중괄호 대신 "" 따옴표를 사용했기 때문에 TCL은 문자열이 정규식 엔진에 도착하기 전에 백 슬래시를 처리하여 백 슬래시가없는 문자열을 생성합니다. 즉, \[Enter\]이 문자 클래스 [Enter]으로 취급되고 있음을 의미합니다. 정규 표현식에 대한

사용 괄호 :

-re {Press \[Enter\] to continue:} { send "\r" } 
관련 문제