2012-09-28 3 views
1

저는 Valgrind를 명령 줄에 입력하는 모든 선반에 복사하는 스크립트를 작성하고 있습니다. 복사 완료 후에expect 명령을 실행하는 동안 spawn_id가 잘못되었습니다.

어떤 이유

vgrindCopy [선반 번호]

어떤 문제없이 위에 복사 것이지만 파일을 추적 에러가 관찰 : 구문은 다음

나쁜 spawn_id는 (과정은 이전에 사망?) 을 여기

는 관련 C의 사본입니다 # "을", "기대" 을 실행하는 동안 ODE는 :

function login_shelf { 
    expect -c " 
    set timeout 15 
    spawn $1 
    expect \"password:\" 
    send \"$PW\r\" 
    expect \"#\" 
    sleep 1 
    exit 
    " 
    } 
# login and make the valgrind directory at /sfs/software/shelf/current 
set -- /opt/swe/tools/ext/gnu/valgrind-3.7.0/i686-linux2.6/lib/valgrind/* 
login_shelf "/opt/corp/projects/shelftools/bin/app rsync -Lau $* $shelf:/shelf/valgrind" 

코드로 주위를 연주 후, 나는 줄 "expect \"#\""를 제거하는 경우, 다음 프로그램이 더 이상 이상 어떤 파일을 복사하지 않습니다 것을 발견했다. 이상하게도 스크립트를 실행할 때 문제가 표시되지만 동료는 아닙니다.

누구든지 비슷한 문제가 있었고 그 원인을 파악 했습니까? 어떤 도움이라도 언제나처럼 높이 평가 될 것입니다!

답변

1

귀하의 코드는 rsync 산란하고 expect \"#\"에서 그것을하지 않을 출력 #에 rsync를 기다리고있다, 그래서 종료하고 expect는 오류를보고합니다.

expect \"#\"을 제거하면 expect 스크립트가 종료되고 rsync가 종료됩니다.

대신 expect \"#\" 당신은 종료 rsync를 기다려야합니다

expect eof 
wait 
관련 문제