명령 질문에 대한 답변 준비


14

하나의 명령 만 실행하는 쉘 스크립트를 작성하려고한다고 가정 해 봅시다. 그러나이 명령은 제대로 설계되지 않았습니다. 명령 행 옵션을 제공하지 않습니다. 대신 몇 가지 질문을하고 사용자 입력을 기다립니다.

스크립트에서이 입력을 준비 할 수있는 방법이 있습니까? 질문에 자동으로 답변됩니까?

답변:


16

명령이 까다 롭지 않으면 다음과 같이 작동해야합니다.

command > /dev/null << EOF
<answer 1>
<answer 2>
<answer 3>
EOF

이를 위해서는 정확한 답변을 미리 알고 있어야합니다.


랩핑 스크립트를 디자인 할 때 위의 답변을 사용할 수 있습니다. 새 스크립트는 매개 변수를 듣고 위의 방법으로 이전 명령을 호출해야합니다.
Walter A

HERE 문서라고도합니다. 자세한 내용은 Wikipedia를 참조하십시오. 문서 정의
OldTimer

15

기대할 수 있습니다. Expect 웹 사이트에서 :

Expect는 telnet, ftp, passwd, fsck, rlogin, tip 등과 같은 대화식 응용 프로그램을 자동화하기위한 도구입니다. Expect는 실제로이 작업을 간단하게 만듭니다. 예상은 또한 동일한 응용 프로그램을 테스트하는 데 유용합니다 ...]

autoexpect 와 같은 많은 도움이 제공됩니다 .

다시 Expect 웹 사이트에서

autoexpect는 다른 프로그램과의 상호 작용을 관찰하고 상호 작용을 재현하는 Expect 스크립트를 만듭니다. 직선 스크립트의 경우 자동 기대 기능은 스크립트를 직접 작성하는 것보다 시간이 많이 절약됩니다.


답변 주셔서 감사합니다. 내 요구는 매우 낮기 때문에 제 경우에는 기대가 너무 많습니다. Bjorns는 내 요구에 완벽하게 부합합니다. 그러나 더 복잡한 솔루션이 필요한 다른 사람들에 대한 답변을 유지하는 것이 좋습니다.
tmuecksch

+1은 자동 기대가 존재한다는 것을 몰랐고 기대 학습 곡선이 너무 가파르 기 때문에 너무 귀찮다는 것을 알았습니다. 다시 한번 살펴 보겠습니다.
Joe

7

스크립트가 하나의 프롬프트 응답을 요구하거나 동일한 응답을 제공 할 수있는 여러 프롬프트가 표시되는 경우 다음이 있습니다 yes.

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or `y'.

다음과 같이 사용하십시오.

yes Me | give_a_hug.sh

3
일반적이지만 아이러니 한 사용법은 다음 yes n과 같습니다.yes n | mv -i * somewhere/
Sam Watkins
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.