티스토리 뷰
발생일: 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
반응형
댓글
공지사항