IT/Programing

[Expect] 정규표현식 비교 함수

착한아줌마 2020. 5. 10. 15:34
반응형







expect 언어도 써보도록 한다.


기초는 차차 쓰고


일단 코드짜다가 막혔던 정규표현식 비교 부터






expect(tcl)에서 정규표현식을 비교하는 함수가 따로 있었다.

(헤딩 엄청했네;;;)


바로



"regexp"



사용법은 아래와 같다.


regexp {정규표현식} 대상변수 결과값변수



해당 함수의 결과값을 가지고 여러 작업을 하게 되는데


아래 예제처럼 쓸 수 있다.




 #!/usr/bin/expect -f

set timeout 4

log_file -noappend ./test1


spawn "bash"


array set fst {

        0 "echo 0"

        1 "echo 1"

        2 "2"

        3 "3"

        4 "echo 4"

}


for {set I 0} {$I < [array size fst]} {incr I 1} {

        puts "<$I>"

        if { [regexp {echo*} $fst($I) match] } {

                set I2 0

                while {true} {

                        puts "$fst($I)-$I2"

                        if {$I2 == 3} { break }

                        set I2 [expr $I2 + 1]

                }

        } else {

                puts "else"

        }

}


log_file

          

sleep 1  

          

expect eof




배열 fst에서 멤버 중 echo를 포함한 애들은


0~2까지 "echo 0-0" 형식으로 출력


그 외에는 "else" 출력





내용상 굉장히 이상해 보이지만...


애초에 다른 목표를 가지고 짠 알고리즘이라


데모처럼 돌려 본거.. 되는지 안되는지


ㅋㅋㅋㅋㅋㅋㅋㅋㅋ










무튼 끝








- 참조

http://coffeenix.net/board_view.php?bd_code=1682