2011-09-14 5 views
11

우분투 11.04에서 내가하고있는 몇 가지 작업을 자동화하기 위해 리눅스 쉘 스크립트를 작성하고 있습니다.리눅스 쉘 스크립팅에서 입력 확인 처리하기

기본적으로 나는 NGINX, MySQL 및 PHP를 설치하고 모든 것을 구성하기위한 쉘 스크립트를 작성하고 있습니다. 나는 명령 행을 통해 모든 것을하는 법을 안다.

그러나 프로세스가 사용자 입력을 요구하는 부분을 어떻게 처리 할 것인지 잘 모르겠습니다. 예를 들어, 내가 apt-get과 함께 설치하는 어떤 것들은 확인을 요구한다. 즉 (Y) es 또는 (N) o.

셸 스크립트에서 자동 확인을 정확히 처리하면 요청시 예 또는 아니요를 자동으로 확인하는 방법은 무엇입니까?

+0

중복? http://stackoverflow.com/questions/226703/how-do-i-prompt-for-input-in-a-linux-shell-script (도움이 되길 바란다.) – heltonbiker

+0

@heltonbiker : 나는 얻으 려하지 않고있다. 입력 셸 스크립트의 사용자로부터, 나는 강제로/내 스크립트가 일반적으로 예 또는 아니오 응답을 제공하라는 메시지가 나타납니다 입력을 만들려고 해요. –

+0

네가 맞아, 내가 잘못 읽었어, 미안. – heltonbiker

답변

15

yes | ./script은 모든 것에 대해 y이라고 대답합니다.

echo N 
echo Y 
echo Y 
+1

이 옵션을 이용해 주셔서 감사합니다. 나는 정확히 어떻게 이렇게 스크립트를 구조화할지 모르겠다. 코드 샘플이 있는가? –

+0

항상 '예'로 대답하고 싶지 않다면, 완전히 대소 문자를 구별하므로 질문을하지 않습니다. 스크립트에 "yes yes no"라고 대답하고 싶다면 간단히 :'printf "y \ ny \ nn \ n"| ./your_script' 또는 각 줄을 출력하는 간단한 스크립트를 작성한 다음 :'./answer_script | ./the_script' – wormsparty

+0

고마워요. 나는 다른 프롬프트에 다르게 대답하고 싶을 때를 대비해 여러 옵션을 가지고 있다고 생각합니다. 이것은 제가하고 싶은 일을하는 가장 우아한 방법 인 것 같습니다. 스크립트로 한 번만 호출하면됩니다. –

4

과 같은 대화 형 프로그램을 일반적으로 모든 질문에 예라고 대답하는 옵션과 함께 호출 할 수 있습니다. 예를 들어 apt-get-y으로 전화 할 수 있습니다. 남자 페이지에서 :

-y, - 네, --assume - 예 자동 예 프롬프트에; 모든 프롬프트에 대한 응답으로 "예"라고 가정하고 을 비대화 형으로 실행하십시오.

+0

감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다. –

1

이 당신을 위해 무엇을 찾고있는 수 있습니다 Expect을 시도해보십시오

그렇지 않으면, 당신이 원하는 답변을 인쇄하는 스크립트, 예를 들어 물품.

+0

고마워요. 매우 흥미로 웠습니다. 프롬프트가 무엇인지 정확히 알아야할까요? 예를 들어 쉘 스크립트에서 실행하는 명령이 "생년월일 입력"과 같은 작업을 수행하는 경우 Expect에 "생년월일을 입력하십시오. : "정확히 프롬프트가 그것을 요구할 것입니다! –

+0

아는 한 - 예 – LordDoskias

관련 문제