본문 바로가기
반응형

내가 생각한 getopts 라는 명령어는 쉘 스크립트 작성 시 getopts를 사용하여 쉘 스크립트에 추가 옵션인자값을 넣을 수 있는 것이다.

 

아래는 내가 짠 코드며 뒤 옵션을 이용해 WebLogic Server를 어떤걸 기동할지 정할 수 있게 만든 쉘이다.

웹로직이 설치되어있어야 테스트가 가능함(본인이 웹로직 엔지니어기 때문에 이걸로 했음)

 

vi WLSstart.sh

#!/bin/sh

DOMAIN_HOME="/u01/ndh/TEST/WLS/WLS12/domains/ndhdomain"
SERVER_NAME=""
while getopts "am:" option
do
  case $option in
    a)
      echo "start Admin Server"
      $DOMAIN_HOME/start_ndh_admin.sh
      ;;
    m)
      SERVER_NAME="$OPTARG"
      echo "start $SERVER_NAME"
      $DOMAIN_HOME/start_$SERVER_NAME.sh
      ;;
    \?)
      echo -e "\033[40;37m OPTION ERROR -a : Admin , -m svr_name : managed \033[0m"
      exit 1
      ;;
  esac
done

 

1) while getopts "am:" option 구문을 살펴보면

getopts 의 옵션으로는 a와 m을 허용하겠다는 뜻이다.

여기서 m뒤에는 콜론(:)이 붙었는데, 콜론이 붙으면 그 옵션뒤에는 변수값이 따라온다는 뜻.

 

"a:b:cde:" 로 구성되었으면 a, b, e는 변수가 있고 c와 d는 단일 옵션이다. 

while 로 묶은것은 옵션이 복수개 일 수 있기 때문

 

getopts로 a 또는 m 을받아 option 에 넣고 해당 option 을 case구문에서 분기시켜 명령어를 실행시킬 수 있다.

 

2) case 아래 m) 구문에선 SERVER_NAME="$OPTARG" 가 보이는데 이 OPTARG가 바로 변수가 되는 부분이다.

 

-rwxr-xr-x. 1 ndh support  2300 Aug 12 14:31 start_ndh_1.sh
-rwxr-xr-x. 1 ndh support  2140 Aug 12 14:31 start_ndh_2.sh
-rwxr-xr-x. 1 ndh support  1992 Aug 12 14:31 start_ndh_admin.sh
[ndh@ndhsotech /u01/ndh/shellScript]./WLSstart.sh -a
start Admin Server
tail -f /u01/ndh/TEST/WLS/WLS12/domains/ndhdomain/Logs/ndh_admin/ndh_admin.out
.
.
JAVA Memory arguments: -Dweblogic.Name:ndh_admin -Xms512m -Xms512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Dweblogic.system.BootIdentityFile=/u01/ndh/TEST/W...

 

-a 옵션을 넣고 쉘을 기동시키니 case a) 부분이 잘 된것을 볼 수 있다. (실제 WLS도 잘 실행되었고, echo "startAdmin Server" 부분이 찍힌것을 볼 수 있음

 

[ndh@ndhsotech /u01/ndh/shellScript]./WLSstart.sh -m 'ndh_1'
start ndh_1
tail -f /u01/ndh/TEST/WLS/WLS12/domains/ndhdomain/Logs/ndh_1/ndh_1.out
.
.
JAVA Memory arguments: -Dweblogic.Name:ndh_1 -Xms1024m -Xms1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Dweblogic.system.BootIdentityFile=/u01/ndh/TEST/WLS/WLS12/domains/ndhdomain/boot.properties -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/u01/ndh/TEST/WLS/WLS12/domains/ndhdomain/Logs/ndh_1 -verbose:gc -XX:+DisableExplicitGC -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/u01/ndh/TEST/WLS/WLS12/domains/ndhdomain/Logs/ndh_1/ndh_1.gc.122122_1628 -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=2M -Djava.security.egd=file:/dev/./urandom

-m 을 넣고 뒤 'ndh_1' 인자값을 넣으니

내가 원하는 start_ndh_1.sh 이 잘 실행되었다.

 

그 외의 값을 넣으면 /?) 로 분기처리한 부분이 실행된다.

    \?)
      echo -e "\033[40;37m OPTION ERROR -a : Admin , -m svr_name : managed \033[0m"
      exit 1
      ;;

 

여기서 \033[40;37m 과 033[0m 은 해당 구문에 색을 입히기 위한 구문이다. (명령어를 치는 쉘의 종류에따라 -e 옵션을 붙여야 할 수 있음)

 

\033[배경;글씨m 를 입력하고, 끝낼부분에 \033[0m 을 넣으면된다.

 

원하는 색은 아래 man console_codes 를 입력하면 아래와 같은 manual 페이지가 나타나는데 내리다보면 색상과 숫자가 표시된 항목이 나오니 참고

 

 

 

728x90
반응형

한걸음 한걸음

개인적인 기록