개인 노트 셸 프로 그래 밍 실천: case

12567 단어 linux
1. 케이스 기본 소개
  • 1. 케이스 케이스 와 if 가 많 으 면 조건 판단 문 이 많 지 않 거나 전체 12032 라 고 할 수 있 습 니 다. 다만 케이스 는 전체 12112 ° if 가 더욱 규범 적 이 고 편리 해 야 합 니 다.
  • 2. case 는 장면 case 를 사용 할 때 정 의 된 규칙 을 실현 한 다음 에 스토리 보드 사용자 가 전달 하 는 매개 변수 에 따라 일치 하 는 규칙 내용 을 추가 해 야 합 니 다.예 를 들 어 nginx 스 크 립 트 를 시작 합 니 다.(시동 | 정지 | 재 부팅 등 작업) 시동, 정지, 재 부팅 등 세 가지 예 안 을 작성 한 다음 에 스토리 보드 사용자 의 선택 에 따라 대응 하 는 예 안 을 작성 하면 됩 니 다
  • 3. case 의 집행 절 차 는 각각 일치 하고 일치 하 는 성공 은 바로 집 니 다. 후속 적 인 예 안 은 들 어가 지 않 습 니 다.모든 것 이 일치 하지 않 으 면 모든 예 안 을 받 아들 일 수 있 습 니 다.
  • 4. case 기초 문법
  • case $1 in
    
    	start)
    		command
    		;;
    	stop)
    		command
    		;;
    	restart)
    		command
    		;;
    	*)
    		command
    esac
    

    예:
    
    #!/bin/bash
    
    cat <****************
    ** 1. backup**
    ** 2. copy**
    ** 3. quit**
    ****************
    eof
    
    read -p "          : " OP
    
    case $OP in
    	1|backup|b|back)
    		echo "Backup Is Done..."
    		;;
    	2)
    		echo "Copy IS Done...."
    		;;
    	3)
    		exit
    		;;
    	*)
    		echo "USAGE: sh $0 [ 1 | 2 | 3 ]" 
    		exit
    esac
    

    둘째, 케이스 작업
  • 1. 케이스 를 사용 하여 nginx 서비스 시작 스 크 립 트 구현
  • . /etc/init.d/functions
    
    # start | stop | restart |
    case $1 in
    	start)
    		#1.        
    		ngx_status=$(systemctl status nginx | grep Active | awk '{print $2}')
    		#2.        (      、       、       ) 
    		if [ "$ngx_status" == "inactive" ];then
    			systemctl start nginx
    			action "Nginx    ..." /bin/true
    		elif [ "$ngx_status" == "active" ];then
    			action "Nginx    ..." /bin/true
    			exit
    		fi
    		;;
    	stop)
    			ngx_status=$(systemctl status nginx | grep Active | awk'{print $2}')
    			if [ "$ngx_status" == "inactive" ];then
    				action "Nginx    ..." /bin/true
    			elif [ "$ngx_status" == "active" ];then
    				systemctl stop nginx
    				action "Nginx    ..." /bin/true
    			fi
    		;;
    	*)
    			echo "USAGE: sh $0 [ start | stop | restart ] "
    esac
    
  • 케이스 를 사용 하여 nginx 상태 모니터링 스 크 립 트 를 실현 합 니 다.
  • 1.   7       。
    2.          。
    
    case $1 in
    	Active|active)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status | awk '/Active/ {print $NF}'
    		;;
    	accept)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==3 {print $1}'
    		;;
    	handled)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==3 {print $2}'
    		;;
    	requests)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==3 {print $3}'
    		;;
    	reading)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==4 {print $2}'
    		;;
    	writing)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==4 {print $4}'
    		;;
    	waiting)
    		curl -s -HHost:nginx.oldxu.com http://127.0.0.1:80/nginx_status |awk 'NR==4 {print $NF}'
    		;;
    	*)
    		echo "USAGE: sh $0 [ active | accept | handled | requests | reading | writing | waiting ]"
    esac
    

    좋은 웹페이지 즐겨찾기