Linux 기반 bash 스 크 립 트 프로 그래 밍 진급 편 - 실행 문 선택 (if, case)

6697 단어 if;caseLinux
bash 스 크 립 트 작성 규범 안내
본문 에서 알 아야 할 스 크 립 트 작성 습관: bash
첫 칸 띄 어 쓰기\#!이어서 해석 기 경로/bin/bash 쓰기
bash 는 스 크 립 트 언어 에 속 하기 때문에 스 크 립 트 언어의 실행 방식 입 니 다.
설명 실행: 소스 코드 --> 실행 시 해석 기 를 시작 하고 해석 기 에서 설명 하면 서 실행 합 니 다.
Linux 의 스 크 립 트 해석 기 는 zsh, csh, bash, tsh 많은 셸 이 있 지만 bash 가 가장 많이 사용 합 니 다.
첫 줄 을 다 쓴 후에 바로 코드 를 쓸 수 있다.그러나 다른 사람 이 읽 는 것 을 편리 하 게 하기 위해 서 는 다음 과 같이 증가한다.
두 번 째 줄:\# 버 전 정보
세 번 째 줄:\# 작성 자 와 연락처
제4 행:\# 저작권 선고 방식
다섯 번 째 줄:\# History
보통 위의 4 줄 주석 정 보 를 추가 합 니 다.
주: 첫 줄 을 제외 한 나머지 줄 은\# 후 내용 스 크 립 트 가 모두 인식 되 지 않 기 때문에\# 주석 으로 사용 할 수 있 습 니 다.
                                                                  실험 환경 CentOS 7.2
bash 스 크 립 트 문장 실행 순서
bash 스 크 립 트 는 순서대로 실행 되 며, 실행 및 순환 실행 을 선택 합 니 다.
▲ 순서대로 실행 하 는 것 은 위 에서 아래로, 왼쪽 에서 오른쪽으로 순서대로 명령 을 하나씩 읽 는 것 이다.
▲ 집행 을 선택 하고, 일부 조건 의 진위 상황 에 따라 각각 해당 하 는 조작 을 수행한다.
▲ 순환 집행 은 순환 조건 에 맞지 않 아 순환 에서 빠 질 때 까지 제한 조건 및 순환 체 에 따라 반복 집행 한다.
본 고 는 비교적 간단 한 선택 집행 문 구 를 소개 한다.
실행 문 선택
실행 문 구 를 선택 하면 크게 if 구문 과 case 구문 으로 나 뉜 다.
………………………………………………………………………………………………………………………
if 구문
if 문 구 는 if 단일 분기 문, if 두 분기 문과 if 다 분기 문 으로 나 뉜 다.
케이스 는 if 다 분기 문장의 특례 라 고 볼 수 있 습 니 다. 형식 이 더욱 간단 하기 때문에 이런 특례 를 만나면 케이스 를 사용 합 니 다.
………………………………………………………………………………………………………………………
if 단일 분기 문
단일 분기:
if CONDITION; then
    if-true
fi
CONDITION: 테스트 조건 일 수도 있 고 명령 실행 결과 일 수도 있 습 니 다. CONDITION 내용 이 사실 이 라면 then 단계 에 들 어간 다음 에 해당 하 는 조작 을 합 니 다. 이 실행 동작 은 명령 일 수도 있 고 다른 실행 문 일 수도 있 습 니 다.바로 여기 서 문장의 끼 워 넣 기 를 할 수 있다.
이 작업 이 끝 난 후, fi 를 사용 하여 if 문장의 끝 동작 을 진행 합 니 다.
………………………………………………………………………………………………………………………
다음은 간단 한 예 를 들 어 스 크 립 트 를 써 서 1 과 2 의 크기 를 판단 하고 1 < 2 는 2 is bigger 를 표시 합 니 다. 
[root@localhost test]# cat >> if11 < #!/bin/bash
> # This script is a value test for 1 and 2
> #2016-0828 author chawan
> #
> if [ 1 -lt 2 ];then
>     echo "2 is bigger"
> fi
> EOF
[root@localhost test]# chmod +x if11
[root@localhost test]# ./if11 
2 is bigger

………………………………………………………………………………………………………………………
if 두 갈래 문장
두 갈래:
   if CONDITION; then
    if-true
   else
    if-false
   fi
두 갈래 문장 이 한 갈래 문장 과 다른 점 은 else 뒤에 CONDITION 이 가짜 일 때 연결 되 는 경우 입 니 다.
마찬가지 로 else 뒤 에는 명령 과 함께 문장 에 끼 워 넣 을 수도 있 습 니 다.마지막 으로 fi 로 if 문 구 를 끝 냅 니 다.
………………………………………………………………………………………………………………………
예: 두 수의 크기 를 비교 하고 첫 번 째 수가 두 번 째 수 보다 크 면 First number is bigger 를 표시 합 니 다. 그렇지 않 으 면 Second number is bigger 를 표시 합 니 다.
[root@localhost test]# cat if12
#!/bin/bash
# Test two number who is bigger
#2016-0828 author chawan
#
[ $# -ne 2 ] && echo "Please give two number !" && exit 1
if [ $1 -ge $2 ];then
    echo "First number $1 is bigger"
else
    echo "Second number $2 is bigger"
fi
[root@localhost test]# chmod +x if12
[root@localhost test]# ./if12
Please give two number !
[root@localhost test]# ./if12 3 9
Second number 9 is bigger

………………………………………………………………………………………………………………………
if 다 분기 문
다 분기:
if CONDITION1; then
   if-true
elif CONDITION2; then
   if-ture 
elif CONDITION3; then
   if-ture 
...
esle
    all-false
fi
다 분기 문 구 는 두 갈래 와 큰 차이 가 없 으 며, 단지 elif 를 통 해 몇 가지 선택 을 통 해 판단 할 뿐이다.if 두 갈래 의 사용 만 이해 하면 if 의 여러 갈래 는 문제 가 되 지 않 습 니 다.
………………………………………………………………………………………………………………………
예제: 파일 의 절대 경 로 를 입력 하여 이 파일 의 종 류 를 판단 합 니 다.
#!/bin/bash
#version 1.0
#auther chawan 
#date:20160905
#            
read -p "Please give a path of file :" Path
#          ,     
test -z $Path && echo "No path" && exit 1
#                ,              
! test -e $Path && echo "Wrong path " && exit 2
#       ,         ,         ,          。
if [ -f $Path ];then
    echo "$Path is common file" 
elif [ -d $Path ];then
    echo "$Path is diretory file"
elif [ -h $Path ];then
    echo "$Path is link file"
else 
    echo "Unknown file type"
fi

다음은 몇 개의 파일 경 로 를 입력 하여 테스트 합 니 다.
[root@centos7 test]# sh if_3 
Please give a path of file :/
/ is diretory file
[root@centos7 test]# sh if_3 
Please give a path of file :/test/t1
/test/t1 is common file
[root@centos7 test]# sh if_3 
Please give a path of file :
No path
[root@centos7 test]# sh if_3 
Please give a path of file :/e
Wrong path

………………………………………………………………………………………………………………………
case 구문
case 문장: 특징 은 특수 한 if 다 분지 문장 으로 이해 할 수 있다
특정 상황 에서 사용 하면 스 크 립 트 를 간소화 합 니 다.
case 구문 형식
case 변수 참조 in
part1)
    분기 1
    ;;
part2)
    분기 2
    ;;
...
*)
    기본 분기
    ;;
esac
case 의 변수 인용 내용 은 in 분기 의 part\# 부분 과 같 아야 합 니 다. 즉, 등가 비교 가 나타 날 때 case 효 과 를 사용 하 는 것 이 좋 습 니 다.다음은 예 를 하나 들 겠 습 니 다.
………………………………………………………………………………………………………………………
예제: 파일 의 절대 경 로 를 입력 하여 이 파일 의 종 류 를 판단 합 니 다.
#!/bin/bash
#version 1.0
#auther chawan
#date:20160905
read -p "Please give a path of file :" Path
test -z $Path && echo "No path" && exit 1
! test -e $Path && echo "Wrong path " && exit 2
#      :d,-,l,p,s,b,c
type_file=`ls -l -d $Path | cut -c1`
case $type_file in
-)
  echo "$Path is common file"
  ;;
d)
  echo "$Path is diretory file" 
  ;;
l)
  echo "$Path is link file"
  ;;
b)
  echo "$Path is block file"
  ;;
c)
  echo "$Path is char file"
  ;;
s)
  echo "$Path is socket file"
  ;;
p)
  echo "$Path is pipe file"
  ;;
*)
  echo "Unknown file type"
  ;;
esac

다음은 몇 개의 파일 경 로 를 입력 하여 테스트 합 니 다.
[root@centos7 test]# sh case_1
Please give a path of file :/etc/fstab
/etc/fstab is common file
[root@centos7 test]# sh case_1
Please give a path of file :/dev/sdb
/dev/sdb is block file
[root@centos7 test]# sh case_1
Please give a path of file :/usr
/usr is diretory file
[root@centos7 test]# sh case_1
Please give a path of file :/ee
Wrong path 
[root@centos7 test]# sh case_1
Please give a path of file :
No path

소결:
스 크 립 트 의 주의사항:
스 크 립 트 에서 명령 별명 을 인식 하지 않 습 니 다: alias 로 설 정 된 별명 은 스 크 립 트 에서 인식 되 지 않 습 니 다.
선택 문 요약:
if 선택: if 단일 분기, if 두 갈래, if 여러 갈래
case 선택: 특수 한 if 다 분기, 등가 비교 상황 에서 사용 효과 가 좋 고 코드 량 을 간소화 합 니 다.
선택 문장의 역할:
스 크 립 트 를 실행 할 때 실행 되 는 조건 에 따라 해당 하 는 문장 에 들 어가 서 실행 합 니 다.
선택 문 구 는 언제 사용 합 니까?
일반적으로 몇 가지 문제 에 대해 상황 별로 토론 할 때 사용 해 야 하 는데, 이것 은 쓰 는 과정 에서 자세하게 체득 해 야 한다.

좋은 웹페이지 즐겨찾기