다음은 셸 스크립트에서 expect로 실행하려고하는 코드입니다.셸에서 명령 출력 보내기
내가 갖는 출력은date +%d%m%y
111217
명령 (날짜 + % D %의 m의 %의 Y)를 억제 만 variale의 날짜 1 출력을 저장하기위한 어떤 방법이있다
send "date +%d%m%y \n"
set date1 "$expect_out(buffer)"
puts "$date1"
expect "#"
?
다음은 셸 스크립트에서 expect로 실행하려고하는 코드입니다.셸에서 명령 출력 보내기
내가 갖는 출력은date +%d%m%y
111217
명령 (날짜 + % D %의 m의 %의 Y)를 억제 만 variale의 날짜 1 출력을 저장하기위한 어떤 방법이있다
send "date +%d%m%y \n"
set date1 "$expect_out(buffer)"
puts "$date1"
expect "#"
?
하는이 시도 : 첫 번째 줄 (명령) 및 마지막 줄 (프롬프트) 사이에있는 텍스트를 선택,
send "date +%d%m%y\r" ;# typically we use \r to "hit enter"
expect -re {\m(\d{6})\M}
set date1 "$expect_out(1,string)"
puts "$date1"
expect "#"
더 일반적으로 전체 단어로 6 개 자리를 볼 것으로 예상, 당신은 할 수있다 : _
정규식 전체 매칭 텍스트를 보유하며, date1
만 캡처 텍스트를 보유 할 스로인 얻어 변수이다
lassign [regexp -inline {.*?\n(.*)\r\n#} $expect_out(buffer)] _ date1
.
Tcl 정규식 구문은 https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm을 참조하십시오.
lassign
없이, 당신은
regexp {.*?\n(.*)\r\n#} $expect_out(buffer) _ date1
lassign이 내 시스템에서 작동하지 않습니다. 명령의 출력 만 얻을 수있는 다른 방법이 있습니까? –
이 코드는 나를 위해 작동하지 않습니다 작성할 수 있습니다. [mcve]를 게시하십시오. –
@emily, 당신은 이것이 [tag : expect] 코드라는 것을 알았습니까? –
네, 코드가 기대됩니다. 하지만'expect' 문이 없으므로 OP가 어떻게'$ expect_out (buffer)'을 얻었는지 궁금합니다. –