Bash 에서 사용자 입력 받기

발생일: 2013.03.05

문제:

압축 파일을 다운로드 받아주는 간단한 쉘 스크립트를 작성하고 있다.

아래와 같이 사용자 입력을 받아서, 다운로드 후 압축을 풀어주고 싶다.


  압축을 해제할까요~? (y/n)



쉘 스크립트에서 프롬프트 입력은 어떻게 처리하면 될까?



해결책:

read 커맨드를 사용하면 되고,

위처럼 프롬프트 문자열 후에 한 글자만 받고 싶다면 아래와 같이 사용하면 된다.


  $ read -n 1 -p "Unzip all files? (y/N)"


-n 옵션은 입력받을 캐릭터 수를 의미하고,

-p 옵션은 프롬프트 전에 출력할 문자열을 의미한다.


read 커맨드로 읽어온 문자열은 REPLY 변수에 저장된다.

입력받은 문자열은 아래와 같은 방식으로 분기할 수 있다.


  $ [[ $REPLY == [yY] ]] && echo "OK"


위 코드는 소문자와 대문자 y를 입력받았을 경우, OK를 출력한다.




덧)

프롬프트 문자열에 `y/N` 처럼 N을 대문자로 표현했는데, 이건 N이 '기본값'이라는 의도였다.

최근에 빌드 도구를 많이 살펴봤는데, 이런 스타일을 사용하는 것들이 꽤 있더라.

명확하고 좋다. :)



참고: http://ubuntuforums.org/showthread.php?t=531144


카테고리

분류 전체보기 (702)
About me. (6)
Daylogs (667)
비공개 (0)
영어공부 (0)
My works - 추억 (29)