반응형
일괄 컴파일 하는 예제 쉘
1 2 3 4 5 6 7 8 9 10 | touch *.pc ls_lst=`ls *.pc | cut -c8-72 |cut -d"." -f1-1` for ls_one in ${ls_lst}; do echo ' ' echo '============[ '$ls_one' ]============' rebuild_dbiolib $ls_one done echo ' E N D' | cs |
----- 다른 예제 ---
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #!/usr/bin/ksh MAPF=' PfmLinkFet000 PfmSvcFet000 PfmSvcExtFet000 PfmSmFet000 PfmSmExtFet000 ' MAPS=' PfmLinkSel000 PfmSvcSel000 PfmSvcExtSel000 PfmSmSel000 PfmSmExtSel000 ' fail_list='' fail_cnt=0 for i in $MAPS; do echo $i rebuild_dbiolib $i if [ $? -ne 0 ]; then fail_list="$fail_list $i" ((fail_cnt+=1)) fi done if [ $fail_cnt -ne 0 ]; then echo 'Failed maps: '$fail_list else echo 'All succeeded' fi exit 0 | cs |
실제 예제
다음예제는 특정 디렉토리의 .c 파일만 모두 읽어서 컴파일 하는 쉘을 불러서 하나씩 컴파일 해 나가고 성공여부를 별도로 지저한 로그파일에다가 남겨주는 쉘이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #!/bin/ksh #----------------------------------------------------------# # 작성자 : 최성환 작성일:2010.7.10 # 사용법 : 아래와 같이팀코드를 TN에 먼저 지정해 줘야 함. # export TN=xxx # 컴파일결과 log 파일은 자기 홈디렉토리에 생김 #----------------------------------------------------------# #----------------------------------------------------------# # 대문자 변환 #----------------------------------------------------------# Uppercase() { echo $* | tr "[a-z]" "[A-Z]" } #----------------------------------------------------------# # 소문자변환 #----------------------------------------------------------# Lowercase() { echo $* | tr "[A-Z]" "[a-z]" } #----------------------------------------------------------# # msg function #----------------------------------------------------------# msg() { echo $1 1>>$logname 2>&1 if [ "$2" = "ECHO" ]; then echo $1 fi } #----------------------------------------------------------# # Usage #----------------------------------------------------------# # 입력 된 아규먼트 개수를 체크한다 #----------------------------------------------------------# #if [ $# -ne 1 ] #then # echo "\nUsage : $0 [deptlist file]" # echo " \n" # exit #fi #----------------------------------------------------------# # 팀리스트 파일을 읽어서 팀개수만큼 돈다 #----------------------------------------------------------# #for team_one in ${team_lst}; do comp() { sm_lst=`ls $SRC_DIR` for sm_one in ${sm_lst}; do EXT=`echo $sm_one|cut -d"." -f2-2` if [ $EXT = "c" ]; then echo '\n====['$SRC_DIR/$sm_one'] compiling.... ========' cccmp.sh $sm_one # 컴파일 쉘 if [ $? -ne 0 ]; then msg "오류 $SRC_DIR/$sm_one" else msg "성공 $SRC_DIR/$sm_one" fi fi done } #----------------------------------------------------------# # 작업일자를 구함 #----------------------------------------------------------# today=`date '+%Y/%m/%d %H:%M:%S'` today2=`date '+%Y%m%d_%H%M%S'` #----------------------------------------------------------# # 팀명을 대소문자로 변환해 놓음 #----------------------------------------------------------# U_TEAM_NAME=$(Uppercase $TN) L_TEAM_NAME=$(Lowercase $TN) #----------------------------------------------------------# # 로그파일을 초기화 #----------------------------------------------------------# logname=~/make_${L_TEAM_NAME}_all.log > $logname rm -f $logname #----------------------------------------------------------# # 메시지파일의 헤더를 작성 #----------------------------------------------------------# msg "=============================================" msg "프로그램 일괄컴파일 결과" msg "컴파일작업일시 : $today" msg "=============================================" SRC_DIR=$FWROOTDIR/$TN/srco comp SRC_DIR=$FWROOTDIR/$TN/srcg comp cat $logname echo '============== E N D ===============' | cs |
실행한 결과 로그 파일은 이렇게 생성된다.
1 2 3 4 5 6 7 8 9 10 | ============================================= 프로그램 일괄컴파일 결과 컴파일작업일시 : 2008/08/16 12:44:56 ============================================= 성공 /nbs/app/xxx/srco/XXX1100.c 성공 /nbs/app/xxx/srco/XXX3001.c 성공 /nbs/app/xxx/srco/XXX9199.c 성공 /nbs/app/xxx/srcg/XXX_CALC_OFR.c 성공 /nbs/app/xxx/srcg/XXX_INF_INQ_OFR.c 성공 /nbs/app/xxx/srcg/XXX_NML_CALC.c | cs |
반응형
'컴퓨터활용 > 유닉스' 카테고리의 다른 글
VIM설정법 ( secure CRT 설정 ) (1) | 2009.01.09 |
---|---|
dbx 사용 예제 ( IBM ) (0) | 2008.10.21 |
shell 에서 SQL을 수행하는 예제 (0) | 2008.10.11 |
정적 라이브러리, 공유 라이브러리, 동적 적재 라이브러리 (0) | 2008.10.01 |
외부 binary 링크하여 컴파일하기 (0) | 2008.09.19 |