bash 프로 그래 밍 if 구문

4835 단어 shell;if;else
1. if - then 문 구 를 사용 합 니 다 (단일 분기)
사용법:
if 조건 테스트;then
  문장 1
  문장 2
  ……
fi
설명: if 뒤의 조건 테스트 에서 되 돌아 오 는 상태 코드 가 0 이면 프로그램 체 의 문 구 를 실행 합 니 다.되 돌아 오 는 상태 코드 가 0 이 아니면 종료 합 니 다.
조건 부 테스트: bash 명령 과 "[]"테스트 를 포함 하여 여러 가지 형식 이 있 습 니 다.
예 1: 파일 이 존재 하 는 지 여 부 를 판단 하고 존재 한다 면 이 파일 이 존재 하 는 지 입력 하 십시오. 존재 한다 면 출력 파일 이 존재 합 니 다.
#!/bin/bash
#
PATH=PATH:/root/bin
if  test �Ce  /etc/passwd;then
   echo “file exsit”
fi

첫 줄 의\#!/빈/bash 는 이 스 크 립 트 가 사용 하 는 셸 이름 을 설명 한 다음\# 로 시작 하 는 줄 을 모두 주석 줄 로 합 니 다.
여기 조건 테스트 는 test ㎡ Ce 입 니 다. /etc/passwd,/etc/passwd 가 존재 하 는 지 판단 하 는 데 사 용 됩 니 다. 존재 한다 면 이 명령 이 돌아 오 는 상태 값 은 0 입 니 다. (이 명령 을 단독으로 실행 한 후 $를 사용 할 수 있 습 니까? 반환 값 을 볼 수 있 습 니 다)
예 2: 스 크 립 트 를 작성 하여 사용자 이름 이 존재 하면 UID 와 셸 을 표시 합 니 다.
#!/bin/bash
#
User=user1
if id $User&> /dev/null;then  
    grep "$User" /etc/passwd | cut -d":" -f3,7
fi

이 조건 테스트 는 id $User 입 니 다. user 1 이 존재 한다 면 id $User 라 는 bash 명령 은 성공 적 으로 실 행 됩 니 다. 상태 값 을 0 으로 되 돌려 줍 니 다. 그러나 우 리 는 그 가 성공 한 결 과 를 알 필요 가 없습니다. 그래서 우 리 는 이 를/dev/null 로 재 설정 합 니 다. 프로그램 체 의 문 구 는 grep 에서 캡 처 한 줄 을 cut 명령 으로 보 내 고 ':' 을 분할 문자 로 합 니 다.그 중 세 번 째 필드 와 일곱 번 째 필드 를 취하 여 표시 합 니 다.
예 3:/etc/rc. d/rc. sysinit 에 빈 줄 이 있 으 면 줄 수 를 표시 합 니 다.
#!/bin/bash
#
if grep"^$" /etc/rc.d/rc.sysinit &> /dev/null;then
   grep "^$" /etc/rc.d/rc.sysinit |wc -l
fi

'^' 는 줄 의 첫 번 째 닻 을 의미 하고 '$' 는 줄 의 끝 닻 을 의미 하 며 '^ $' 줄 의 첫 번 째 와 줄 의 끝 에 문자 가 없 으 면 공백 줄 입 니 다.'wc - l' 의 역할 은 grep 가 수집 한 줄 의 수 를 통계 하 는 데 쓰 인 다.
 
 
2. if - else - then 문 구 를 사용 합 니 다 (두 갈래)
사용법
if 조건 테스트;then
  문장 1
  문장 2
  ……
else
  문장 1
  문장 2
  ……
fi
설명: if 뒤의 조건 테스트 에서 되 돌아 오 는 상태 코드 가 0 이면 프로그램 체 의 문 구 를 실행 합 니 다.되 돌아 오 는 상태 코드 가 0 이 아니라면 else 아래 프로그램 체 의 문 구 를 실행 합 니 다.
예 4: 사용자 가 존재 하 는 것 을 지정 하면 ID 번호 와 셸 을 먼저 설명 하고 표시 합 니 다.그렇지 않 으 면 사용 자 를 추가 하고 ID 를 표시 합 니 다.
#!/bin/bash
#
User=user2
if id $User&> /dev/null;then
   echo "$User exist"
   grep "$User" /etc/passwd | cut -d":" -f3,7
else
   useradd $User
   grep "$User" /etc/passwd | cut -d":" -f3
fi

 
예 5: 장치/dev/sda 3 가 마 운 트 되 어 있 으 면 마 운 트 지점 을 표시 합 니 다.그렇지 않 으 면 마 운 트 되 지 않 았 음 을 설명 합 니 다.
#!/bin/bash
#
Device=/dev/sda3
if mount | grep"$Device" &> /dev/null;then
   grep "$Device" | cut -d"" -f3
else
   echo "$Device is not exist"
fi

 
3. bash 조건 테스트
1. 정수 테스트
2. 문자 테스트
3. 파일 테스트
정수 테스트: 수치 1 비교 기호 수치 2
비교 기호:
    -ge: 같 음 (equal)
   -ne: 같 지 않 음 (같 지 않 음)
   -lt: 이상 (greater than)
   -lt: 이하 (less than)
   -ge: 같 음 (greater than or equal)
   -le: 이하 (less than or equal)
예 6: 두 정수 가 크기 를 비교 하고 수출 이 비교적 크다.
주: $RANDOM 사용 내장 변수 임 의 생 성 정수
#!/bin/bash
#
A=$RANDOM
B=$RANDOM
if [ $A -ge $B];then
   echo "Max num is $A"
else
   echo "Max num is $B"
fi

주의: [] 에서 판단 식 과 괄호 사이 에 i 의 그것 은 빈 칸 이 있어 야 합 니 다.
예 7: 하나의 정 수 를 무 작위 로 하여 그 패 리 티 를 판단 한다.
#!/bin/bash
#
A=$RANDOM
if [ $[$A%2] -eq 0];then
   echo "$A is even"
else
   echo "$A is odd"
fi

 
문자 테스트: 문자열 1 비교 기호 문자열 2
비교 기호:
    >:... 보다 크다
    <:... 보다 작다
   ==:... 과 같다
예 8: 주어진 사용자 의 셸 이/bin/bash 인지 판단 합 니 다.
#!/bin/bash
#
User=user1
Shell=`grep"$User" /etc/passwd | cut -d ":" -f7`
 
if [ $Shell =="/bin/bash" ];then
   echo "$User is a bash user"
else
   echo "$User is not a bash user"
fi

 
파일 테스트: test [옵션] filename 을 주로 사용 합 니 다.
파일 형식:
    -e: 파일 이름 이 존재 하 는 지 여부
    -f: 파일 이름 이 존재 하고 파일 인지 여부
    -d: 파일 이름 이 존재 하고 디 렉 터 리 인지 여부
    -b: 파일 이름 이 존재 하고 블록 장치 인지 여부
    -c: 파일 이름 이 존재 하고 문자 장치 인지 여부
    -S: 파일 이름 이 존재 하고 Socket 파일 인지 여부
    -p: 파일 이름 이 존재 하고 FIFO 파일 인지 여부
    -L: 파일 이름 이 존재 하고 링크 파일 인지 여부
파일 권한:
    -r: 읽 기 권한
    -쓰기 권한
    -x: 실행 가능 한 권한
    -u: SUID 권한
    -g: SGID 권한
    -s: 비 공백 파일
파일 비교: file 1 비교 기호 file 2
    -nt: file 1 이 file 2 보다 새 것 인지 여부
    -ot: file 1 이 file 2 보다 오래된 지 여부
    -ef: file 1 과 file 2 가 같은 파일 인지 여부
문자 판정:
    -z $string: string 이 빈 문자열 이면 true 입 니 다.
    -n $string: string 이 빈 문자열 이면 결 과 는 fasle 입 니 다.
4. if - elif - else - then - else 문 구 를 사용 합 니 다 (다 분기)
사용법
if 조건 1;then
  문장 1
  문장 2
  ……
elif 조건 2;then
  문장 1
  문장 2
  ……
else
문장 1
  문장 2
  ……
fi
 

좋은 웹페이지 즐겨찾기