과도한 프롬프트를 처리하기 위한 스크립트 를 작성 중입니다 expect
.
bash
내가 사용하는 스크립트는 다음 두 가지 순서 중 하나를 따를 수 있습니다.
prompt1 -> prompt2 -> prompt3
prompt1 -> prompt3
즉, 때로는 이해가 되지 않을 때도 있습니다 prompt2
. 그래서 내 질문은 다음과 같습니다. expect
확인 prompt2
하고 존재하는 경우 a를 보내고 y
계속 진행하는 스크립트 를 어떻게 작성할 수 있습니까 ? 그렇지 않으면 계속됩니다.
편집: @glenn의 의견과 답변에 감사드립니다! 나중에 다른 사람들에게 도움이 될 수 있도록 질문을 더 명확하게 만들려고 노력하겠습니다. 제가 작업 중인 특정 스크립트는 bash
서버에서 일부 데이터를 다운로드하는 것입니다. 일반적으로 스크립트를 실행하면 다음과 같은 일이 발생합니다.
Do you want to download data from *server name*?
y
Do you want to download data from *some directory within server*?
y
...
하지만 가끔 이 스크립트를 실행할 때 아직 서버에 연결되지 않은 경우가 있습니다. 그래서 서버에 연결되어 있는지 확인하는 부분을 스크립트에 포함시켰습니다. 그렇지 않으면 다음과 같은 또 다른 메시지가 표시됩니다.
Do you want to download data from *server name*?
y
Looks like you are not connected to *server name*! Want to connect now?
y
Do you want to download data from *some directory within server*?
y
...
답변1
나는 이것이 당신이 원하는 것이라고 생각합니다: expect
wait 명령누구나"팁 2"또는"팁 3"
expect "prompt1"
send "answer to prompt1\n"
expect {
"prompt2" {send "y\n"; exp_continue}
"prompt3"
}
send "answer to prompt3\r"
exp_continue
기본적으로 루프입니다. 이 Expect 명령을 유지하면서 나열된 패턴을 계속 찾으세요.
"prompt3"에는 해당 작업이 없으므로 예상 명령이 종료됩니다.