2011-10-17 2 views
0

내 기대 스크립트에 다음과 같은 코드 샘플이 나에게 많은 문제를 일으키고있다.스폰 된 프로세스로 전송 된 데이터와의 일치를 방지하는 방법

#!/usr/bin/expect 
#some other code 
set psucommand "psu |grep -v grep | grep $jobname\r" 
#some other code 
expect "env[lindex $argv 0]>" {send $psucommand} 
expect { 
"$jobname" { 
     send_user "$jobname" 
     send "exit\r"} 
"env[lindex $argv 0]>" { 
     send_user "" 
     send "exit\r"} 
} 

이 두 번째 "실제"$ psucommand (psu | grep -v grep | grep ACTUALJOBNAME \ r)) 나는 스폰 된 프로세스에 보내고, 생성 된 프로세스의 출력 만 일치시켜야합니다.

다음은이 스크립트를 expect -d

expect: does " psu |grep -v grep | grep ACTUALJOBNAME\r\n" (spawn_id exp6) match glob pattern "ACTUALJOBNAME"? yes 

과 함께 실행할 때 마지막에 표시되는 내용입니다. 생성 된 프로세스에 보낸 명령과 일치합니다. 나는 이것을 피할 필요가있다.

도움말!

답변

2
set psucommand [format {psu | grep [%s]%s} \ 
        [string index $jobname 0] \ 
        [string range $jobname 1 end]] 

이 명령 픽업 안 psu | grep [A]CTUALJOBNAME

그래서, 당신은 send "$psucommand\r" 할 필요가있는 만 $의 작업 이름에 기대 psucommand 발생합니다.

관련 문제