쉘 스크립트를 실행하면 명령어와 옵션 값들은 자동으로 쉘 변수 $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 |