728x90
반응형
질문 : Linux 셸 스크립트에서 예 / 아니요 / 취소 입력을 요청하는 방법은 무엇입니까?
쉘 스크립트에서 입력을 일시 중지하고 사용자에게 선택을 요청하고 싶습니다.
표준 Yes
, No
또는 Cancel
유형 질문입니다.
일반적인 bash 프롬프트에서 어떻게 수행합니까?
답변
쉘 프롬프트에서 사용자 입력을 얻는 가장 간단하고 널리 사용 가능한 방법은 read
명령입니다. 사용법을 설명하는 가장 좋은 방법은 간단한 데모입니다.
while true; do
read -p "Do you wish to install this program?" yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
Steven Huwig가 지적한 또 다른 방법은 Bash의select
명령입니다. select
를 사용하는 동일한 예입니다.
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done
select
를 사용하면 입력을 삭제하지 않아도됩니다. 사용 가능한 선택 항목이 표시되고 선택 항목에 해당하는 번호를 입력합니다. 또한 자동으로 루프되므로 유효하지 않은 입력을 제공하는 경우 재 시도 while true
또한 Léa Gris 는 그녀의 답변 에서 요청 언어를 불가지론 적으로 만드는 방법을 보여주었습니다. 여러 언어를 더 잘 제공하기 위해 첫 번째 예제를 적용하는 것은 다음과 같습니다.
set -- $(locale LC_MESSAGES)
yesptrn="$1"; noptrn="$2"; yesword="$3"; noword="$4"
while true; do
read -p "Install (${yesword} / ${noword})? " yn
if [[ "$yn" =~ $yesexpr ]]; then make install; exit; fi
if [[ "$yn" =~ $noexpr ]]; then exit; fi
echo "Answer ${yesword} / ${noword}."
done
분명히 다른 통신 문자열은 여기에서 번역되지 않은 상태로 남아 있습니다 (Install, Answer). 더 완전하게 완성 된 번역에서 다루어야 할 필요가 있지만, 부분 번역조차도 많은 경우에 도움이 될 것입니다.
마지막으로 F. Hauri 의 우수한 답변 을 확인하십시오.
출처 : https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script
728x90
반응형
'개발관련 > Linux' 카테고리의 다른 글
Linux에서 pthread_create에 대한 정의되지 않은 참조 (0) | 2021.06.17 |
---|---|
트리 형태로 디렉토리 구조를 인쇄하는 Linux 명령 (0) | 2021.06.16 |
Linux 디렉토리에서 재귀 적으로 파일 계산 (0) | 2021.06.14 |
터미널 창에서 Linux에서 파일을 만드는 방법 (0) | 2021.06.14 |
PuTTYgen (Windows)을 사용하여 생성 된 SSH 키 쌍을 ssh-agent 및 키 체인 (Linux)에서 사용하는 키 쌍으로 변환하는 방법 (0) | 2021.06.12 |