2011-04-19 3 views
1

을 기대에서 작동하지 않는,하지만 난 꽤 당혹 다음 찾기 :간부는 내가 처음 기대 스크립트를 쓰고 있어요, 그래서 뭔가를 분명 누락 될 수 있습니다 스크립트

$ expect 
expect1.1> exec echo a 
a 
expect1.2> 
$ cat > test.exp 
exec echo a 
$ expect test.exp 
$ 

내가 기대하고 간부 일을 실행하는 경우 수동으로 작동합니다. 동일한 명령을 스크립트에 넣으면 작동하지 않습니다. 무슨 일이야?

답변

5

expect는 기본적으로 Tcl의 확장입니다. Tcl의 exec은 외부 명령을 실행합니다. 은 출력을 캡처하여 값으로 반환합니다. 지시하지 않는 한 이 아니라이 아닌 stdout으로 보냅니다. 그러나 대화 형 Tcl (또는 expect) 세션은 편의로 stdout 으로 출력을 인쇄합니다.

스크립트가 있어야한다 : 나는 믿고있어

puts [exec echo a] 
# or 
set output [exec echo a] 
puts $output 

더 복잡한 외부 명령에 대한 자리 표시 자입니다 "는이 에코". 당신은 Tcl의 새로운면

puts "this is something" ;# the Tcl way 
send_user "this is too\n" ;# the expect way 

뿐만 아니라 당신이 learn Tcl 먼저해야 다음 기대 : 당신은 뭔가를 인쇄합니다.

+0

설명해 주셔서 감사합니다. 네 말이 맞아, 나는 또한 Tcl을 처음 사용한다. 솔직히 말해서, 나는 Tcl에서 프로그래밍하는 법을 배우려하지 않는다. 저는 실용적인 문제를 해결하기를 원했고, 직업에 적합한 도구처럼 들릴 것이라고 기대했습니다. 아마도 이러한 노력은 superuser.com에 더 적합 할 것입니다. – LaC

+0

@LaC, 나는 당신의 기대 프로그래밍 * 톤 *을 더 쉽게 만들 것이므로 Tcl을 배우라고 제안했다. –

+0

한 가지 더 : ""을 사용하여 명령을 래핑하지 마십시오. 그렇지 않으면 실패합니다. 적어도 내 경우에는 실패했다. –

관련 문제