bash 셸 (5): if, else, while 크기 비교

8461 단어
1、if ;else 구문
1、if        :
if     ;then
      1
      2
    ……
else
      1
      2
    ……
fi
2、if        :
ifthen
      1
      2
    ……
elif
      1
      2
    ……
elif
      1
      2
    ……
else
      1
      2
    ……
fi
3.while
    while       do            done
4.until  
    until       do           done
 

주: 1. elif 도 여러 개 있 을 수 있 습 니 다.
자주 사용 하 는 판단 문:
  • [- f "somefile"]: 파일 인지 아 닌 지 판단 하기 
  • [- x "/bin/ls"]:/bin/ls 가 존재 하고 실행 가능 한 권한 이 있 는 지 판단 합 니 다. 
  • [n "$var"]: $var 변수 가 값 이 있 는 지 판단 합 니 다. 
  • ["$a"= "$b"]: $a 와 $b 가 같은 지 판단
  • - r file 사용 자 는 진짜 로 읽 을 수 있 습 니 다. 
  • - w file 사용 자 는 진짜 로 쓸 수 있 습 니 다. 
  • - x file 사용 자 는 진짜 로 실행 할 수 있 습 니 다. 
  • - f file 파일 은 정규 파일 입 니 다. 
  • - d file 파일 은 디 렉 터 리 가 진짜 입 니 다. 
  • - c file 파일 은 문자 특수 파일 입 니 다. 
  • - b file 파일 은 블록 특수 파일 입 니 다. 
  • - s file 파일 크기 가 0 이 아 닐 때 진짜 입 니 다. 
  • - t file 파일 설명자 (기본 값 1) 가 지정 한 장치 가 터미널 일 때 실제 입 니 다.  

  • 자주 사용 하 는 비교 문:
    조건 부 선택 을 포함 하 는 셸 스 크 립 트 는 변 수 를 포함 하지 않 는 작업 에 대해 간단 한 셸 스 크 립 트 를 수행 할 수 있 습 니 다.
    그러나 일부 의사 결정 임 무 를 수행 할 때 는 if/then 의 조건 판단 이 필요 하 다.
    셸 스 크 립 트 프로 그래 밍 은 비교 연산, 파일 존재 여부 판단 등 을 포함 하여 이러한 연산 을 지원 합 니 다.기본 적 인 if 조건 명령 옵션 은: - eq - 두 매개 변수 가 같 는 지 비교 합 니 다 (예 를 들 어 if [2 – eq 5]).
  • -eq  —두 매개 변수 가 같 는 지 비교 하 다.    ;바로 EQUAL 은
  • -ne  —두 매개 변수 가 같 지 않 은 지 비교 하기;NOT EQUAL 은 같 지 않다
  • -lt    —매개 변수 1 매개 변수 2 보다 작 을 지 여부       ;바로 LESS THAN 작 음
  • -le   —매개 변수 1 이 매개 변수 2 보다 작 을 지 여부;바로 LESS THAN OR EQUAL 이 같 음
  • -gt   —매개 변수 1 이 매개 변수 2 보다 큰 지 여부       ;바로 GREATER THAN 이
  • 보다 크다 는 것 이다.
  • -ge  —매개 변수 1 이 매개 변수 2 보다 큰 지 여부;바로 GREATER THAN OR EQUAL 이 
  • -f     — 어떤 파일 이 존재 하 는 지 확인 하 십시오 (예: if [- f "filename"]) 
  • -d    — 디 렉 터 리 존재 여부 확인 

  • 거의 모든 판단 은 이런 비교 연산 자로 이 루어 질 수 있다.스 크 립 트 에서 자주 사용 하 는 - f 명령 옵션 은 파일 을 실행 하기 전에 존재 하 는 지 확인 합 니 다. 
    예제 코드 1: for 순환
    #!/bin/bash
    for k in $( seq 1 10 )
    do
       mkdir /home/kuangl/aaa${k}
       cd /home/kuangl/aaa${k}
       for l in $( seq 1 10 )
       do
       mkdir bbb${l}
       cd /home/kuangl/aaa${k}
       done
       cd ..
    done

    예제 코드 2: while 순환
    #!/bin/bash
    while read kuangl
    do
      echo ${kuangl}
    done < /home/kuangl/scripts/testfile

    예제 코드 3: until 순환
    #!/bin/bash
    declare -i i=10
    declare -i sum=0
    until ((i>10))
    do
      let sum+=i
      let ++i
    done
    echo $sum

     
    예제 코드 4:
             
    #!/bin/sh 
    YACCESS=`date -d yesterday +%Y%m%d` 
    FILE="access_$YACCESS.log.tgz" 
    cd /data/nginx/logs
    if [ -f "$FILE" ];then 
    echo "OK" 
    else 
    echo "error $FILE" > error.log 
    mail -s "$FILE backup fail" [email protected] <error.log 
    fi

    예제 코드 5:
    #!/bin/sh
    # 
    DIR=/data/img_cache
    DAY=`date +"%Y-%m-%d %H:%M"`
    NUM=`ls $DIR |wc -l`
    DIRNAME=`ls $DIR| grep leveldb | head -n 1 | awk '{print $NF}'`
    if [[ $NUM -gt 3 ]];then
        rm -rf $DIR/$DIRNAME
        echo "---------$DAY----($DIR)-----------------------" >> /tmp/img_cache.log
        echo "$DIRNAME Deleted successful" >> /tmp/img_cache.log
    fi

    좋은 웹페이지 즐겨찾기