2011-04-27 2 views
2

내가 아래에있는 내가 즉, 기대 스크립트를 수정 몇 줄을 추가 시도스크립트

expect -c " 
spawn tdwallet add $StringName 
expect \"^Enter\" 
send \"Krishna123\r\" 
" 

if [ $? != 0 ]; then 
    echo "Failed to Add a String $StringName." 
else 
    echo "\"add <string>\" ==> [OK]" 
fi 

스크립트 후

expect -c " 
spawn tdwallet add $StringName 
expect \"^Enter\" 
send \"Krishna123\r\" 
expect eof 
catch wait reason 
exit [lindex $reason 3] 
" 

을 "보내기"를 기대하지만이 기대에서 양산 procees의 종료 코드를 반환해야 프로세스의 실패/성공과 관계없이 항상 0이 아닌 값을 반환합니다.

프로세스가 실패하거나 성공할 때마다 올바른 종료 코드를 식별 할 수있는 몇 가지 지침을 제공해 주시겠습니까? 사전에

감사

관련,
Srikrishna ERRA.

답변

3

문제는 $reason이 (귀하의 껍질로 대체되어지고) 예상치 못한 문제입니다. 또한 빈 문자열로 대체되어 구문 오류가 발생합니다.

expect -c " 
spawn tdwallet add $StringName 
expect \"^Enter\" 
send \"Krishna123\r\" 
expect eof 
catch wait reason 
exit [lindex \$reason 3] 
" 

OTOH, 아마 지금 당신이 그 스크립트를 넣어 복잡성이 수준까지 받고 있다는 것을 더 좋을 것이다 :이 문제를 해결하는 가장 빠른 방법은이처럼 $ 앞에 역 슬래시를 추가하는 것입니다 별도의 파일에 저장하면 백 슬래시 수를 줄일 수 있습니다. 그 시점에서 명령 줄 인수로 추가 할 것을 전달합니다.

따라서, addWallet.exp에서이 있습니다

spawn tdwallet add [lindex $argv 0] 
expect "^Enter" 
send "Krishna123\r" 
expect eof 
catch wait reason 
exit [lindex $reason 3] 

그리고 다음 주 스크립트는 이것이다 :

작업을 훨씬 쉽게
expect addWallet.exp $StringName 

!

관련 문제