예상: 무한 예상 생성을 사용하여 bash에서 while 루프를 올바르게 닫는 방법은 무엇입니까?

예상: 무한 예상 생성을 사용하여 bash에서 while 루프를 올바르게 닫는 방법은 무엇입니까?

다음 스크립트가 있습니다.

#!/usr/bin/expect

set timeout 20

set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

eval spawn $cmd

while {1} {
  expect "id_rsa"
  send "$password\r";
}

interact

목적은 "id_rsa"를 예상하고 생성된 $cmd가 열릴 때 비밀번호를 다시 입력하는 것입니다.

이제 스크립트는 작동하지만 항상 오류로 끝납니다.

send: spawn id expx not open while executing ...

오류가 나타나지 않도록 Expect에서 오류를 잡아서 올바르게 종료하는 것이 아니라 확인하여 while 루프가 올바르게 종료되도록 올바른 방법으로 코드를 작성하고 싶습니다.

미리 감사드립니다.

답변1

변화를 시도하다

while {1} {
  expect "id_rsa"
  send "$password\r";
}

interact

도착하다

expect {
  id_rsa {
    send "$password\r"
    exp_continue         ;# this is the "looping" part
  }
  eof
}

관련 정보