나는 지금 모든 곳에서 답을 찾기 위해 더 많은 시간을 보냈으며 지금까지 아무 것도 작동하지 않았습니다. 내가하려고하는 것은 GNU 화면 세션에 첨부하여 명령 행 인수 (명령)를 보내고 그 한 명령의 결과를 출력하는 expect 스크립트를 실행하는 것이다. 지금까지 내 scritps 중 하나입니다Tcl을 통한 명령 출력 예상
#!/usr/bin/expect -f
set timeout 3
#exp_internal 1
spawn screen -raAd call_sess
sleep 1
expect -re "\\\$" {
send $argv
send "\n"
sleep 1
}
expect -re ".*" {
set output $expect_out(0,string)
}
expect "\$" {
send "\001"
send "d"
}
expect eof {
puts "OUTPUT---------------"
puts $output
puts "OUTPUT---------------"
}
와 $ expect_out (0, 문자열) 만하더라도, 줄 바꿈과 일치 * 마지막 경기 이후 모두 일치해야합니다.. 누구나 내가이 일을 끝내는 데 도움이된다면, 나는 포기하고 불가능하게 만들 준비가되어있다.
EDIT : 주석에 응답되었지만 명령이 화면에서 실행되도록 지정 했어야하며 올바르게 출력을 캡처 할 수 없습니다.
EDIT2 : 제안 된대로 스크립트를 화면에 표시하도록 변경했습니다. 감사합니다.
$ argv를 보낸 후에 '\ r'을 보내면 안됩니까? –
'\ n'은 명령을 보내는 데 사용됩니다. 3.6.5-1-ARCH가 실행되면 차이가 발생합니다. 명령이 실행되면 출력을 올바르게 캡처 할 수 없습니다. – apottere
Expect에 대해 많이 알지는 못하지만 명령 출력을 임시 파일로 리디렉션 한 다음 해결할 수 있습니까? –