🏷️옵션 처리(option parsing)

📌개념

  • 유닉스 계열에서 오래전부터 사용해왔던 getopt(3) API와 유사하게, 셸 스크립트에서도 셸 내부 명령어인 getopts로 옵션을 처리할 수 있다.
  • 셸 스크립트는 옵션과 실행인자를 구분하지 않기에 실행인자 처리 방식이 중요하다.
  • whileshift를 조합해도 옵션 처리를 할 수 있다.
  • getopts명령어는 while문과 case문을 조합해서 사용한다.

  • 형식은 다음과 같다.
while getopts 옵션1[:]옵션2[:]... 변수명
do
	case $변수명 in
    	옵션1)
        	수행문 ;;
        옵션2)
        	수행문 ;;
done
  • 파라미터를 갖는 옵션은 뒤에 :를 붙인다.
    • 그러면 OPTARG변수에 해당 옵션의 파라미터 값이 전달된다.
  • OPTIND변수에는 getopts명령어가 처리할 다음 인수 번호를 갖고 있다.
    • 따라서 while 반복문 밖에 shift `expr $OPTIND - 1` 명령어를 사용하면, $1이 옵션과 옵션 파라미터가 아닌 참 실행인자가 담기게 된다.

📌예제

  • 다음은 옵션에 따라 가위, 바위, 보 셋 중에 하나를 출력하는 코드다.
    • 특별히 p옵션에는 파라미터를 받을 수 있게 했다.
    • 그리고 옵션이 아닌 셸 스크립트의 첫 실제 실행인자를 출력한다.
#!/bin/sh

while getopts rsp: OPT
do
        case $OPT in
        r)
                echo "Rock" ;;
        s)
                echo "Scissors" ;;
        p)
                echo "$OPTARG Paper" ;;
        esac
done
shift `expr $OPTIND - 1`
echo $1
  • 다음은 실행 결과다.
$ sh opt.sh -p Red -s Argument1
Red Paper
Scissors
Argument1

이것으로 셸 스크립트 시리즈는 마무리 됐다.

profile
2Co 4:7

0개의 댓글

Powered by GraphCDN, the GraphQL CDN