내가 생각한 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 페이지가 나타나는데 내리다보면 색상과 숫자가 표시된 항목이 나오니 참고
'IT 공부 > OS' 카테고리의 다른 글
[Linux] 특수권한 비트, CHMOD 에 대해 (0) | 2024.03.11 |
---|---|
OSI 7계층 (L4, L7 스위치) (0) | 2024.02.24 |
[OS] UNIX 환경에서의 LANG=C 의 의미 (0) | 2021.07.29 |
[Linux] 백스페이스가 안될때 (0) | 2021.05.23 |
[가상환경구성] VirtualBox 게스트확장 CD 관련.. (0) | 2021.05.22 |