셸 스 크 립 트 프로 그래 밍 학습 의 길 - case 문장
case 문장 은 실제 적 으로 규범 화 된 다 분지 if 문장 으로 문자열 변수의 값 은 여러 개의 '|' 파이프 기호 로 구 분 될 수 있다.마지막 변수 값 의 형식, 변수 값 과 ";"두 분 호 는 한 쌍 입 니 다. 마지막 변수의 값 을 추출 하 더 라 도 항상 이러한 형식의 완전 성 을 유지 해 야 합 니 다.
case “ ”in
1)
1…
;;
2| 3| 4)
2…
;;
*)
3…
;;
esac
중국어 프로 그래 밍 문법:
case “ ”in
)
…
;;
)
…
;;
| | )
…
;;
*)
good bye!!!
;;
esac
2. 간단 한 케이스 스 크 립 트
입력 1, 2, 3 각각 출력 에 대응 하 는 값
[root@shellbiancheng jiaobenlianxi]# cat case01.sh
#!/bin/bash
usage() {
echo $"Usage: $0 {1|2|3}" contents
exit 1
}
num() {
case "$1" in
1)echo "1"
;;
2)echo "2"
;;
3)echo "3"
;;
*)usage
;;
esac
}
main() {
if [ $# -ne 1 ];then
usage
fi
num $1
}
main $*
3. 스 크 립 트 를 실행 하여 과일 메뉴 를 다음 과 같이 인쇄 합 니 다.
a.apple
b.pear
c.banana
d.cherry
사용자 가 과일 을 선택 할 때 인쇄 는 선택 한 과일 이 무엇 인지 알려 주 고 선택 한 과일 에 색 을 더 해 준다.case 문장 으로 실현 을 요구 하 다.
[root@shellbiancheng jiaobenlianxi]# cat menufruit.sh
#!/bin/bash
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK='\E[1;35m'
SHAN='\E[31;5m' echo –e
RES='\E[0m'
menu(){
cat <
4. 사례
nginx 관리 명령 은 다음 과 같 습 니 다:
시작:/usr/local/nginx/sbin/nginx
정지:/usr/local/nginx/sbin/nginx – s stop
다시 불 러 오기:/usr/local/nginx/sbin/nginx – s reload
케이스 스 크 립 트 로 nginx 서비스 시작 을 시 뮬 레이 션 하 십시오. 닫 기:
/etc/init.d/nginx {start|stop|restart|reload}
chkconfig 를 통 해 관리 할 수 있 습 니 다.
해결 방향:
사실은 매우 간단 합 니 다. 우 리 는 네 개의 모듈 로 나 눌 수 있 습 니 다. 첫 번 째 모듈 은 서비스 모듈 을 시작 하 는 것 입 니 다. 두 번 째 모듈 은 서비스 모듈 을 닫 는 것 이 고 세 번 째 모듈 은 서비스 모듈 을 다시 시작 하 는 것 입 니 다. 네 번 째 모듈 은 부 드 러 운 재 부팅 모듈 입 니 다.먼저 함수 로 이 네 개의 모듈 을 각각 실현 하고 이 함수 들 을 호출 하면 됩 니 다. 마지막 으로 켜 기 자동 시작 을 설정 하 는 것 입 니 다. 이것 은 chkconfig 명령 을 사용 해 야 합 니 다.먼저 우리 가 쓴 시작 스 크 립 트 를/etc/init. d/아래 에 놓 고 시작 하 는 아래 에 놓 아야 합 니 다.
(1) 먼저 시작 스 크 립 트 의 이름 을 바 꾼 다음/etc/init. d/아래 에 놓 고 실행 권한 을 줍 니 다.
[root@shellbiancheng jiaobenlianxi]# cp nginx.sh nginx
[root@shellbiancheng jiaobenlianxi]# cp nginx /etc/init.d/
[root@shellbiancheng jiaobenlianxi]# chmod +x /etc/init.d/nginx
[root@shellbiancheng jiaobenlianxi]# ll /etc/init.d/nginx
-rwxr-xr-x. 1 root root 981 4 2 04:16 /etc/init.d/nginx
(2) 자동 시작 추가
자동 시작 을 추가 하기 전에 우 리 는 서비스의 자동 시작 이 보통 어느 운행 단계 에 있 는 지 알 아야 한다.network 의 경우 network 서비스 가 작 동 하 는 운행 단 계 를 봅 니 다.
[root@shellbiancheng jiaobenlianxi]# chkconfig --list network
network 0: 1: 2: 3: 4: 5: 6:
실행 단계:
0: ;
1: ;
2: , NFS;
3: ;
4: ;
5:X11, ;
6: 。
위 는 명령 행 에서 network 의 작 동 단 계 를 보 는 것 입 니 다. 아래 는 network 에서 스 크 립 트 를 시작 하여 network 의 작 동 단 계 를 보 겠 습 니 다.
[root@shellbiancheng jiaobenlianxi]# head -5 /etc/init.d/network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
우 리 는 위의 chkconfig 줄 을 보 았 습 니 다. 이것 은 매우 중요 합 니 다. 이것 은 켜 는 시작 순 서 를 기본적으로 2345 로 정 의 했 습 니 다. 10 은 서비스 켜 는 시작 순 서 를 대표 합 니 다. 90 은 서비스의 꺼 진 시작 순 서 를 대표 합 니 다. chkconfig 와 description 이 줄 을/etc/init. d/아래 nginx 의 시작 스 크 립 트 에 복사 합 니 다.우 리 는 먼저/etc/rc. d/rc 3. d/안 으로 가서 사용 하지 않 은 부팅 순 서 를 찾 아 보 겠 습 니 다. S20 이 없 는 것 을 보고 nginx 의 부팅 순 서 를 20 으로 설정 합 니 다.끄 는 순서 도 마찬가지 입 니 다. 끄 는 순 서 를 대문자 K 로 시작 하지 않 고 nginx 의 끄 는 순 서 를 16 으로 설정 합 니 다.
[root@shellbiancheng logs]# ll /etc/rc.d/rc3.d/ |grep S19
lrwxrwxrwx. 1 root root 17 12 30 04:10 S19rpcgssd -> ../init.d/rpcgssd
[root@shellbiancheng logs]# ll /etc/rc.d/rc3.d/ |grep S20
(3) 스 크 립 트 코드 는 다음 과 같 습 니 다.
[root@shellbiancheng jiaobenlianxi]# cat nginx.sh
#!/bin/bash
# chkconfig: 2345 20 16
# description: nginx is a http server
#Date: 2018-04-07
#Author: Create by linzhongniao
#Mail: [email protected]
#Function:This scripts function is Nginx startup script.
#Version: 1.1
if [ -f /etc/init.d/functions ];then
. /etc/init.d/functions
fi
pidfile=/usr/local/nginx/logs/nginx.pid
SHAN='\E[31;5m'
RES='\E[0m'
nginx=/usr/local/nginx/sbin/nginx
RETVAL=0
linzhongniao() {
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "Nginx is $1" /bin/true
else
action "Nginx is $1" /bin/true
fi
}
start() {
if [ -f $pidfile ];then
echo -e ${SHAN}"nginx is running"${RES}
else
$nginx
linzhongniao started
fi
return $RETVAL
}
stop() {
if [ ! -f $pidfile ];then
echo -e ${SHAN}"nginx is stopped"${RES}
else
$nginx -s stop
linzhongniao stopped
fi
return $RETVAL
}
restart() {
printf "Restarting Nginx ...
"
stop
sleep 2
start
}
reload() {
if [ ! -f $pidfile ];then
echo -e ${SHAN}"Can't open $pidfile,no such file or directory"${RES}
else
$nginx -s reload
linzhongniao reload
fi
return $RETVAL
}
usage() {
echo -e ${SHAN}"USAGE:$0 {start|stop|restart|reload}"${RES}
}
main() {
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)usage
exit $RETVAL
esac
}
main $1
exit $RETVAL
마지막 으로 chkconfig 에 불 러 옵 니 다. nginx 서비스 시작 을 완료 하고 지정 한 시작 단계 에서 시작 하도록 설정 합 니 다
chkconfig --level
[root@shellbiancheng ~]# chkconfig --add /etc/init.d/nginx
[root@shellbiancheng init.d]# chkconfig nginx on
[root@shellbiancheng init.d]# chkconfig --list nginx
nginx 0: 1: 2: 3: 4: 5: 6:
[root@shellbiancheng init.d]# chkconfig nginx off
[root@shellbiancheng init.d]# chkconfig --list nginx
nginx 0: 1: 2: 3: 4: 5: 6:
(4) 요약:
1. 스스로 스 크 립 트 를 개발 하여 자동 으로 작 동 하 는 절 차 는 스 크 립 트 를 개발 하고 개발 한 스 크 립 트 를/etc/init. d/디 렉 터 리 에 넣 고 자동 시작 관 리 를 추가 하 는 것 입 니 다.
2. 절차 에서 가장 중요 한 것 은 스 크 립 트 를 개발 하 는 것 입 니 다. 자신 이 개발 한 스 크 립 트 중의
chkconfig: 2345 20 16
줄 에 주의해 야 합 니 다.3. 스 크 립 트 를/etc/init. d/디 렉 터 리 에 두 고 스 크 립 트 실행 권한 을 부여 합 니 다.
4. 자신 이 쓴 스 크 립 트 는 시스템 서비스 에 -- add 매개 변 수 를 추가 해 야 합 니 다.
5. case 구문 소결
(1) 케이스 문장 은 여러 갈래 의 if 문장 에 해당 하고 케이스 문장의 장점 이 더욱 규범화 되 고 읽 기 쉽다.
(2) 시스템 서비스 시작 스 크 립 트 전송 은 케이스 문 구 를 많이 사용 하고/etc/init. d/rsyslog 의 시작 스 크 립 트 를 참고 합 니 다.
(3) 모든 케이스 문 구 는 if 를 사용 하여 실현 할 수 있 지만 케이스 문 구 는 더욱 규범화 되 고 뚜렷 하 다.
(4) case 문 구 는 일반적으로 서비스의 시작 스 크 립 트 에 적합 하고 범위 가 좁다.if 수치 판단, 비교적 광범 위 하 게 응용.
(5) case 의 변수의 값 이 고정 되 어 있 으 면 start/restart/stop 의 요소 로 적합 합 니 다.
6. 시스템 스 크 립 트 학습 시스템 스 크 립 트 보기
/etc/init.d/functions
함수 라 이브 러 리 함수 설명:http://www.cnblogs.com/image-eye/archive/2011/10/26/2220405.html
/etc/rc.d/rc.sysinit
/etc/init.d/rpcbind
/etc/init.d/nfs
/etc/init.d/httpd
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.