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
}
이 함수 역할: 완전한 발표 과정 실현
요약:
위 에 서 는 배열 의 실제 역할 만 소 개 했 을 뿐 현재 업무 중 에 저 는 셸 스 크 립 트 를 많이 쓰 지 않 았 기 때문에 배열 의 사용 에 대해 어색 합 니 다. 위의 예 는 사고 한 결과 입 니 다. 어린 것 처럼 보이 지만 결국은 자신의 사 고 를 통 해 얻 은 것 입 니 다.여기 블 로그 에 기록 해 주세요.신 이 보 세 요. 웃 으 며 지나 가면 됩 니 다. 초보 자 들 은 참고 하여 배열 을 연습 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PHP 배열에서 요소의 값이 최대 값인 키 이름을 가져옵니다.Qiita 에 " "@ PHP 매뉴얼 데이터 최대값이 나타나는 순서대로 획득 결과 키를 정렬한 후 가져오기 결과 @ paiza.IO PHP v5.6.40, v7.1.33, v7.4.4 " "@ StackOverflo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.