프로그램 설치에 대한 "예"응답을 어떻게 스크립팅합니까?


113

저는 Amazon Linux 인스턴스로 작업하고 데이터를 채우고 작업하는 모든 프로그램을 설치하는 몇 가지 스크립트가 있지만 몇 가지 프로그램에서 다음을 묻습니다.

Do you want to continue [Y/n]?

설치를 일시 중지하십시오. 모든 경우에 "Y"로 자동 응답하고 싶습니다. 이제 어떻게해야할지 확신합니다.


3
패키지 관리자에는 사용할 수 있는 --noprompt또는 --noconfirm플래그 가있을 수 있습니다.
Blender 2011 년

답변:


209

'예'명령 것이다 에코 'Y'(또는 당신이 그것을 물어 무엇이든) 무기한. 다음과 같이 사용하십시오.

yes | command-that-asks-for-input

또는 대문자 'Y'가 필요한 경우 :

yes Y | command-that-asks-for-input

이것은 yes의 입력을 사용하도록 지원되는 일부 명령에서만 작동합니까? OpenStack에서 한눈에 시도했지만 작동하지 않습니다. Expect가 모든 상황에 대해 더 정확하다고 생각합니다
HVNSweeting

1
//, 전체 단어 "예"를 입력해야하는 경우 어떻게합니까?
Nathan Basanese 2015

1
yesCPU를 최대한 활용하는 것으로 알려져 있으므로 주의하십시오 . stackoverflow.com/a/18164007/720665
데이비드 Salamon

좋은. 이것은 내 인생을 상당히 쉽게 만들었습니다. :디. 또한 -ybash 스크립트에 대한 인터넷 검색 은 어렵습니다.
Nathan Smith

1
@DavidSalamon은 /dev/null또는 STDOUT 과 같이 제한없이 무언가에 쓸 때만 해당됩니다 . 명령에 파이프되어 수신 명령이 읽을 때마다 파이프에 한 줄만 쓰고 그렇지 않으면 대기합니다.
Walf

68

echo y | command 작동해야합니다.

또한 일부 설치 프로그램에는 "auto-yes"플래그가 있습니다. 그것은의 -y를위한 apt-get우분투.


에코 "giturl no"하려고 해요 | jspm 레지스트리는 내 쉘 스크립트에서 registry_name jspm-git을 만듭니다. 하지만 계속 실패합니다. giurl을 입력하는 동안. 어떤 생각?
manismku

또 다른 예 : docker-compose에는 무언가를 제거하는 명령에 대해 "auto-yes"로 작동하는 -f( --force) 플래그가 있습니다
luke

프롬프트에서 두 번 이상 확인을 요청하는 경우 어떻게 "Echo Y"를 반복적으로 수행합니까?
Safak Ozkan

18

대상 서버에 Expect를 설치하지 못할 수 있습니다. 예를 들어 Jenkins 작업을 작성하는 경우가 많습니다.

그렇다면 askubuntu.com에서 다음과 같은 답변을 고려할 것입니다.

/ubuntu/338857/automatically-enter-input-in-command-line

printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input

드문 경우지만이 명령은 사용자가 문자 뒤에서 Enter를 누르지 않아도됩니다. 이 경우 개행 문자를 제외하십시오.

printf 'yyy' | ./script_that_needs_user_input

완전성을 위해 여기 문서를 사용할 수도 있습니다.

./script_that_needs_user_input << EOF
y
y
y
EOF

또는 쉘이 here 문자열을 지원하는 경우 :

./script <<< "y
y
y
"

또는 한 줄에 하나의 입력으로 파일을 만들 수 있습니다.

./script < inputfile

다시 말하지만,이 답변에 대한 모든 크레딧은 askubuntu.com , lesmana 의 답변 작성자 에게 있습니다.


//,이 답변이 마음에 들면 askubuntu.com 사용자 @lesmana를 찬성하십시오.
Nathan Basanese

6

이것이 당신이 원하는 것보다 더 복잡하고 무거울 수 있지만,이를 수행하는 매우 유연한 방법 중 하나는 Expect (또는 다른 프로그래밍 언어의 파생물 중 하나) 와 같은 것을 사용하는 것 입니다.

Expect는 텍스트 기반 응용 프로그램을 제어하기 위해 특별히 설계된 언어로, 바로 사용자가 원하는 작업입니다. 더 복잡한 작업을 수행해야하는 경우 (예 : 실제로 다음에 수행 할 작업 / 답변을 결정하는 논리) Expect를 사용하는 것이 좋습니다.


6

-y설치 명령 을 입력 하면됩니다.

예를 들면 : yum install <package_to_install> -y


3

기본값을 그대로 사용하려면 다음을 사용할 수 있습니다.

\n | ./shell_being_run

//, 이것이 기본값을 수락한다는 의미는 무엇입니까?
Nathan Basanese 2018

2
에서 bash, sh내가 아는 대부분의 시스템, 당신은 필요 다음 명령 그렇지 않으면되지 않을 것 파이프. echo\n
2i3r
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.