본문 바로가기

LINUX/Shell Script

13. getops ( 옵션처리 )

 
쉘 스크립트를 실행하면 명령어와 옵션 값들은 자동으로 쉘 변수 $0 .. N 으로 저장된다.
  
그리고 -a  , -p 는 명령행 옵션으로 이를 처리하기 위해서는 getopt  함수를 OPTARG , OPTIND  와 함께 사용하면 된다.
 
 OPTARG 는 getops 했을 때 붙어있는 인자값이다.
 
 OPTIND 는 OPTIND 는 getopt 로 처리하고 남은 다음 처리할 인덱스 번호가 된다. 
 
 

실행 예제
 
$ ./getopts.sh -a -p 'testArg' /home/user1/docs
 
 

스크립트
 
    #!/bin/sh
    a_flag = 0
    separator = ""
    # getopt 명령을 줄 때 처리하고자 하는 인자를 입력하면 된다.
    #     a 옵션은 인수를 받지 않는다.
    #     p 옵션은 인수를 받는다.
    #         인수를 받을때는 OPTARG 라는 쉘 변수를 사용하면 된다.
    while getopts "ap:" option  
    do
        case $option in
            a)
                a_flag = 1
                ;;
            p)
                separator="$OPTARG"
                ;;
            \?)
                echo "Usage: getopts.sh [-a] [-p separator] target_dir" 1>&2 # 해당 Usage 를 error 스트림으로 출력한다.
                exit 1
                ;;
        esac
    done
    # OPTIND 는 getopt 로 처리하고 남은 다음 처리할 인덱스 번호가 된다.
    #    예를 들어 ./getopts.sh -a -p 'sep' /home/user/docs 라고 입력한 경우
    #    -a, -p 'sep 는 이미 처리 되었으므로 다음 처리할 번호는 4번이 되게 된다.
    # shift 명령은 명령행 인자중에 삭제할 인자 개수를 지정한다.
    # 따라서 아래 명령은 shift 3 이 되고 스택에 남은 인자는 $1, $2, .. 로 다시 인덱싱된다.
    shift $(expr $OPTIND -1)
    path = "$1"
 
 
 

'LINUX > Shell Script' 카테고리의 다른 글

15. stty ( 암호입력 )  (0) 2020.02.04
14. read ( 사용자 키입력 받기 )  (0) 2020.02.04
12. 명령문 인식  (0) 2020.02.04
11. 파일확인  (0) 2020.02.04
10. 비교  (0) 2020.01.31