나는 몇 시간 동안 검색하고 여러 가지 접근 방식을 시도했습니다. 이는 작동할 것으로 예상되는 코드 조각입니다.
foreach line [split $expect_out(buffer) \r\n] {
if {[string match {*word*} $line]} {
send_user "$line\r\n"
set acctnum [exec echo $line | cut -d\. -f1]
send_user "$acctnum\n\r"
}
}
출력은 다음과 같습니다
2. word
2
별표가 없는 "단어"와 양쪽 끝에 별표가 있는 "단어"는 작동하지 않습니다. 명령줄에 제공되는 변수여야 합니다. 변수와 함께 작동하는 조합을 찾지 못했습니다.
작동하도록 제안해 주세요.
답변1
나는 그 안에서 답을 찾았다.Expect 스크립트에서 문자열을 하위 문자열과 일치시킵니다.. 이전에 이 질문을 본 적이 있지만 주의 깊게 읽지 않은 것 같습니다. 대답은 중괄호를 큰따옴표로 바꾸는 것입니다.
foreach line [split $expect_out(buffer) \r\n] {
if {[string match "*$varname*" $line]} {
send_user "$line\r\n"
set acctnum [exec echo $line | cut -d\. -f1]
send_user "$acctnum\n\r"
}
}