728x90
반응형
shellscript로 프로그램을 만들다 보면 실행 인자 및 옵션을 필요로 하는 경우가 많이 있습니다. shellscript에서 실행 옵션을 구현을 하는 방법은 getopt 함수를 쓰면 매우 간단해집니다.
이 번 포스팅에서는 제가 자주 사용하는 간단한 실행 옵션 예제를 공유하고자 합니다.
간단한 실행 옵션 예제
이 파일은 실행 옵션 기능을 확인하기 위해 간단히 만든 스크립트입니다. 크게 사용법, 실행 옵션 설정, 실행 옵션 확인 이렇게 세 부분으로 나뉘어 있습니다. 필요한 옵션을 만들 때에는 빨간색으로 표시된 부분을 주의해서 변경해야 합니다.
- 인자가 있는 실행 옵션
옵션 뒤에 ":"를 붙여줍니다. 아래 예에서는 "m" 옵션과 "u"옵션이 해당합니다.
- 인자가 없는 실행 옵션
옵션만 정의합니다. 아래 예에서는 "f", "q", "v", "d", "g", "h" 옵션이 해당합니다.
#!/bin/sh
# 사용법
usage()
{
echo "$0 -m MODE[,MODE,...] [-u USER -f -q -v -d -g -h]"
echo "<options>"
echo " -m MODE[,MODE,...]:"
echo " : MODE is 'GET' or 'SET' or 'SHOW'"
echo " If MODE is GET, get Info."
echo " If MODE is SET, set Info."
echo " If MODE is SHOW, show Info"
echo " -u USER: user name usging logging. default is 'unknown'"
echo " -f : Without waiting for a lock, force the update."
echo " -q : Optional. Quiet mode"
echo " -v : Optional. Verbose mode"
echo " -d : Optional. print debug message"
echo " -g : Optional. No logging to syslog"
echo " -h : Show this message."
echo "<exit code>"
echo " 0: Success."
echo " 1: Failure."
exit 1
}
#실행 옵션 설정
while getopts m:u:fqvdgh opts; do
case $opts in
m) O_MODES=$OPTARG
;;
u) O_USER=$OPTARG
;;
f) O_FORCE="yes"
;;
q) O_QUIET="yes"
;;
v) O_VERBOSE="yes"
;;
d) O_DEBUG="yes"
;;
g) O_SYSLOG="no"
;;
h) usage
;;
\?) usage
;;
esac
done
#실행 옵션 확인
echo "O_MODES=${O_MODES}"
echo "O_USER=${O_USER}"
echo "O_FORCE=${O_FORCE}"
echo "O_QUIET=${O_QUIET}"
echo "O_VERBOSE=${O_VERBOSE}"
echo "O_DEBUG=${O_DEBUG}"
echo "O_SYSLOG=${O_SYSLOG}"
실행 옵션 확인
직접 실행하여 실행 옵션이 동작하는 것을 확인해보겠습니다.
사용방법 확인
"-h 옵션"을 이용해서 사용법을 확인합니다.
getopt_test.sh -h
인자가 있는 옵션
getopt_test.sh -m SET
getopt_test.sh -u jungfo
getopt_test.sh -m SET -u jungfo
인자가 없는 옵션
getopt_test.sh -f -q -v -d -g
getopt_test.sh -fqvdg
getopt_test.sh -m GET -u leo -fqvdg
쉘스크립트에서 옵션 처리 방법에 대해서 알아봤습니다.
728x90
반응형
'프로그래밍 > 리눅스' 카테고리의 다른 글
[shellscript] 중복 실행 방지 - Avoid redundant execution (0) | 2021.01.13 |
---|---|
[shellscript] error: garbage option 오류 (0) | 2021.01.13 |
[svn 오류] svn: E155009: Failed to run the WC DB work queue associated with (3) | 2021.01.05 |
[ubuntu v14.04.1] MariaDB 설치 방법 (2) | 2020.12.23 |
[swig 간단 예제] python 에서 C 라이브러리 함수 호출 (2) | 2020.12.04 |
댓글