bash 실전 편 - 작업 중인 배열 의 실제 응용 (테스트 환경 발표 스 크 립 트)

배열 은 이전에 이미 소 개 를 한 적 이 있 는데, 다음은 업무 중의 실제 효용 을 소개 한다.
나타 난 작업 배경:
    회사 테스트 환경의 tomcat 의 webapps 아래 세 가지 항목 이 있 습 니 다. 일반적인 스 크 립 트 를 발표 하려 면 모든 항목 에 발표 스 크 립 트 를 따로 써 야 합 니 다. 너무 번 거 로 워 서 하나의 스 크 립 트 로 이 세 가지 항목 을 해결 할 수 있 을 지 생각 합 니 다. 처음에 스 크 립 트 에서 세 개의 변 수 를 정의 하여 해당 하 는 가방 이름 을 얻 은 다음 에 올 린 디 렉 터 리 를 판단 합 니 다.이 가방 이 존재 하면 발표 합 니 다.실현 되 었 지만 과정 이 좀 번 거 롭 고 정 의 된 변 수 는 죽은 것 입 니 다. 앞으로 재 활용 할 필요 가 있 으 면 추가 로 수정 해 야 합 니 다. 귀 찮 습 니 다. 최근 에 배열 을 복습 할 때 갑자기 배열 의 기능 이 생각 났 습 니 다. 배열 플러스 for 순환 을 사용 하면 몇 줄 만 에 문 제 를 해결 할 수 있 고 앞으로 재 활용 할 때 스 크 립 트 를 수정 할 필요 가 없습니다.몇 개의 변 수 를 바 꾸 기만 하면 된다.
실제 대본
#!/bin/bash
#author by chawan
#date 2017/05/18
#               ,   /etc/sudoers      
#    :1、     tomcat,   pid  tomcat       ,
2、 tomcat          if ture  ,   ,   if false  ,
3、    。
#
NAME=test #   
TOMCAT=/tomcat  #tomcat   
WEB=$TOMCAT/webapps     #war     
PID=`ps aux|grep -v grep|grep "$TOMCAT\>"|awk '{print $2}'` #   tomcat PID
DATE=`date +%Y-%m-%d-%H:%M:%S`  #     ,      
LOGS=$TOMCAT/logs           #       
OLD=/opt/old_$NAME          #          
WAR=/opt/war_$NAME          #           
declare -a war_array       #          WAR      
war_array=($(ls $WAR))
#tomcat stop  :     
function killtomcat(){
        sh $TOMCAT/bin/shutdown.sh 
                cd $TOMCAT/work/Catalina
                rm -rf localhost && echo "cache is cleaned"
        #  
}
#           
function taillogs(){
         tail -f $LOGS/catalina.out #
}
#      :    
function autodeploy(){
                deploy_cp
        /etc/init.d/tomcat8080 start
        deploy_mv
}  
#      ,       ,             ,     OLD  ,      WEB   
function deploy_cp (){
    for ((i=0;i /dev/null && echo "${war_array[$i]} is moved $OLD"
        cp $WAR/${war_array[$i]} $WEB && echo "${war_array[$i]} package is moved to $WEB"
    done
}
#      ,      ,                 ,  WAR             
function deploy_mv (){
    for ((n=0;n 
  


     8 1 6 , ;

8

     、tomcat 、webapps 、tomcat PID、 、 、 , 。


1

    


6


killtomcat

function killtomcat(){
        sh $TOMCAT/bin/shutdown.sh 
                cd $TOMCAT/work/Catalina
                rm -rf localhost && echo "cache is cleaned"
        #  
}

tomcat 를 닫 고 캐 시 를 청소 하 는 데 사용 합 니 다.
taillogs 함수
function taillogs(){
         tail -f $LOGS/catalina.out #
}

게시 가 성 공 했 는 지 확인 하 는 데 사용
function deploy_cp (){
    for ((i=0;i /dev/null && echo "${war_array[$i]} is moved $OLD"
        cp $WAR/${war_array[$i]} $WEB && echo "${war_array[$i]} package is moved to $WEB"
    done
}

deploy_cp 함수
function deploy_cp (){
    for ((i=0;i /dev/null && echo "${war_array[$i]} is moved $OLD"
        cp $WAR/${war_array[$i]} $WEB && echo "${war_array[$i]} package is moved to $WEB"
    done
}

이 함 수 는 주로 4 단 계 를 포함 합 니 다:
1. 업 로드 된 패키지 파일 을 옮 겨 다 니 며 업 로드 된 패키지 이름 가 져 오기;
2. 현재 웹 앱 에서 업 로드 된 패키지 와 같은 이름 의 폴 더 를 삭제 합 니 다.
rm -rf ${war_array[$i]:1:3}

이 단 계 는 가방 과 같은 이름 의 압축 해 제 된 폴 더 를 삭제 하 는 것 입 니 다. 제 가방 이름 이 abc. war 라 고 가정 하면,
${war array [$i]} 의 내용 은 abc. war 입 니 다. 이전에 해 제 된 abc 폴 더 를 삭제 하고 싶 습 니 다. 새로운 변 수 를 정의 하면 자 연 스 럽 게 이 루어 집 니 다. 그러나 배열 에는 슬라이스 기능 이 있 습 니 다. 즉, 배열 의 내용 을 자 르 는 것 입 니 다. 그래서 우 리 는 ${war array [$i]: 1: 3} 을 통 해 abc 의 획득 을 실현 할 수 있 습 니 다. 구체 적 인 개념 은 이전 배열 편 을 참조 할 수 있 습 니 다.
http://chawan.blog.51cto.com/9179874/1851443
3. 웹 앱 에서 올 린 이름 과 같은 war 패 키 지 를 OLD 오래된 패 키 지 폴 더 로 이전 합 니 다.
4. 업 로드 된 새 패 키 지 를 웹 앱 경로 로 복사 합 니 다.
deploy_화면 음악 함수
function deploy_mv (){
    for ((n=0;n 
  

3 :

1、 , ;

2、 OLD war , war ;

3、 。

autodeploy

function autodeploy(){
                deploy_cp
        /etc/init.d/tomcat8080 start
        deploy_mv
}

이 함수 의 역할: 발표 의 핵심 과정 실현
배포 함수
function deploy(){
clear
killtomcat
autodeploy
taillogs
}

이 함수 역할: 완전한 발표 과정 실현
요약:
    위 에 서 는 배열 의 실제 역할 만 소 개 했 을 뿐 현재 업무 중 에 저 는 셸 스 크 립 트 를 많이 쓰 지 않 았 기 때문에 배열 의 사용 에 대해 어색 합 니 다. 위의 예 는 사고 한 결과 입 니 다. 어린 것 처럼 보이 지만 결국은 자신의 사 고 를 통 해 얻 은 것 입 니 다.여기 블 로그 에 기록 해 주세요.신 이 보 세 요. 웃 으 며 지나 가면 됩 니 다. 초보 자 들 은 참고 하여 배열 을 연습 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기