[Linux] 셸 스 크 립 트 실전 - 각종 연산 자 소개

글 목록
  • 서문
  • 1. 복습 전 내용
  • 1. 산술 연산 자
  • 2. 흔히 볼 수 있 는 산술 연산 명령
  • 2. 관계 연산 자
  • 3. 불 연산 자
  • 4. 논리 연산 자
  • 5. 문자열 연산 자
  • 6. 파일 테스트 연산 자
  • 총화
  • 머리말
    지난 몇 편의 글 에서 우 리 는 주로 셸 의 스 크 립 트 기초 와 기본 적 인 연산 자 를 토론 했다. 여기 서 우 리 는 이전의 내용 을 조금 복습 했다.
    복습
    1. 산술 연산 자
    다음 표 는 자주 사용 하 는 산술 연산 자 를 보 여 줍 니 다. 변수 a = 10, 변수 b = 20 을 가정 합 니 다.
    연산 자
    설명 하 다.
    예 를 들다
    +
    덧셈expr $a + $b 결 과 는 30 이 었 다.
    -
    감법expr $a - $b 결 과 는 - 10 이 었 다.
    *
    곱셈expr $a \* $b 결 과 는 200 이 었 다.
    /
    나눗셈expr $b / $a 결 과 는 2.
    %
    나머지 를 취하 다expr $b % $a 결 과 는 0 이 었 다.
    =
    값 을 부여 하 다
    a = $b 는 변수 b 의 값 을 a 에 부여 합 니 다.
    ==
    대등 하 다.두 숫자 를 비교 하 는 데 사용 되 며, 같 으 면 true 로 돌아 갑 니 다.
    [$a = = $b] false 를 되 돌려 줍 니 다.
    !=
    같 지 않다.두 숫자 를 비교 하 는 데 사용 되 며, 다 르 면 true 로 돌아 갑 니 다.
    [$a! = $b] 트 루 로 돌아 갑 니 다.
    * * 주의: * * 조건 식 은 괄호 사이 에 두 고 빈 칸 이 있어 야 합 니 다. 예 를 들 어 [a = a = = a = = b] 는 잘못된 것 입 니 다. [$a = = $b] 로 써 야 합 니 다.
    2. 흔히 볼 수 있 는 산술 연산 명령
    연산 연산 자 와 연산 명령
    의의
    (())
    정수 연산 에 사용 되 는 상용 연산 자 는 효율 이 매우 높다.
    let
    정수 연산 에 사용, 유사 (()
    expr
    정수 연산 에 사용 할 수 있 으 나, 기타 많은 기능 이 있다.
    bc
    linux 다음 계산기 프로그램 (정수 및 소수 연산 에 적합)
    $[]
    정수 계산 에 사용 하 다
    awk
    awk 는 정수 연산 에 도 사용 할 수 있 고 소수 연산 에 도 사용 할 수 있다.
    declare
    변수 값 과 속성 을 정의 합 니 다. - i 매개 변 수 는 성형 변 수 를 정의 하고 연산 할 수 있 습 니 다.
    관계 연산 자
    일상적인 업무 에서 우 리 는 수학 연산 을 해 야 하 는 것 을 제외 하고 때때로 관계 연산 도 해 야 한다. 이른바 관계 연산 이란 크 고 같 으 며 작 다 는 것 이다.
    관계 연산 자 는 문자열 의 값 이 숫자 가 아 닌 숫자 만 지원 합 니 다. * *
    다음 표 는 자주 사용 하 는 관계 연산 자 를 보 여 줍 니 다. 변수 a 는 10 이 고 변 수 는 b 는 20 입 니 다.
    연산 자
    설명 하 다.
    예 를 들다
    -eq
    두 개의 수가 같은 지 확인 하고, 같은 값 으로 true 로 돌아 갑 니 다.
    [$a - eq $b] false 를 되 돌려 줍 니 다.
    -ne
    두 개의 수가 같 지 않 은 지 확인 하고, 같 지 않 은 지 true 로 돌아 갑 니 다.
    [$a - ne $b] 트 루 로 돌아 갑 니 다.
    -gt
    왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [$a - gt $b] false 로 돌아 갑 니 다.
    -lt
    왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
    [$a - lt $b] 트 루 로 돌아 갑 니 다.
    -ge
    왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [$a - ge $b] false 로 돌아 갑 니 다.
    -le
    왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
    [$a - le $b] 트 루 로 돌아 갑 니 다.
    관계 연산 자 인 스 턴 스 연습:
    #!/bin/bash
    
    a=10
    b=20
    
    if [ $a -eq $b ]
    then
       echo "$a -eq $b : a    b"
    else
       echo "$a -eq $b: a     b"
    fi
    
    if [ $a -ne $b ]
    then
       echo "$a -ne $b: a     b"
    else
       echo "$a -ne $b : a    b"
    fi
    
    if [ $a -gt $b ]
    then
       echo "$a -gt $b: a    b"
    else
       echo "$a -gt $b: a     b"
    fi
    
    if [ $a -lt $b ]
    then
       echo "$a -lt $b: a    b"
    else
       echo "$a -lt $b: a     b"
    fi
    
    if [ $a -ge $b ]
    then
       echo "$a -ge $b: a       b"
    else
       echo "$a -ge $b: a    b"
    fi
    
    if [ $a -le $b ]
    then
       echo "$a -le $b: a       b"
    else
       echo "$a -le $b: a    b"
    fi
    

    실행 결과:
    [root@ecs-c13b ~]# bash ysf.sh 
    10 -eq 20: a     b
    10 -ne 20: a     b
    10 -gt 20: a     b
    10 -lt 20: a    b
    10 -ge 20: a    b
    10 -le 20: a       b
    [root@ecs-c13b ~]# 
    

    삼. 불 연산 자
    다음 표 는 자주 사용 하 는 불 연산 자 를 보 여 줍 니 다. 변수 a 는 10 이 고 변 수 는 b 는 20 입 니 다.
    연산 자
    설명 하 다.
    예 를 들다
    !
    비 연산, 표현 식 이 true 이면 false 를 되 돌려 줍 니 다. 그렇지 않 으 면 true 를 되 돌려 줍 니 다.
    [! false] 트 루 로 돌아 가.
    -o
    또는 연산, 트 루 표현 식 이 있 으 면 트 루 로 돌아 갑 니 다.
    [$a - lt 20 - o $b - gt 100] 트 루 로 돌아 갑 니 다.
    -a
    연산 과 함께 두 표현 식 이 모두 true 여야 true 로 돌아 갑 니 다.
    [$a - lt 20 - a $b - gt 100] false 로 돌아 갑 니 다.
    불 연산 자 인 스 턴 스 는 다음 과 같 습 니 다:
    #!/bin/bash
    
    a=10
    b=20
    
    if [ $a != $b ]
    then
       echo "$a != $b : a     b"
    else
       echo "$a == $b: a    b"
    fi
    
    if [ $a -lt 100 -a $b -gt 15 ]
    then
       echo "$a    100   $b    15 :    true"
    else
       echo "$a    100   $b    15 :    false"
    fi
    
    if [ $a -lt 100 -o $b -gt 100 ]
    then
       echo "$a    100   $b    100 :    true"
    else
       echo "$a    100   $b    100 :    false"
    fi
    
    if [ $a -lt 5 -o $b -gt 100 ]
    then
       echo "$a    5   $b    100 :    true"
    else
       echo "$a    5   $b    100 :    false"
    fi
    
    [root@ecs-c13b ~]# bash ysf.sh 
    10 != 20 : a     b
    10    100   20    15 :    true
    10    100   20    100 :    true
    10    5   20    100 :    false
    [root@ecs-c13b ~]# 
    

    논리 연산 자
    다음은 Shell 의 논리 연산 자 를 소개 합 니 다. 변수 a 는 10 이 고 변수 b 는 20: 논리 연산 자 인 스 턴 스 는 다음 과 같 습 니 다.
    [root@ecs-c13b ~]# cat  ysf.sh 
    #!/bin/bash
    
    a=10
    b=20
    
    if [[ $a -lt 100 && $b -gt 100 ]]
    then
       echo "   true"
    else
       echo "   false"
    fi
    
    if [[ $a -lt 100 || $b -gt 100 ]]
    then
       echo "   true"
    else
       echo "   false"
    fi
    
    

    결과 되 돌리 기:
    [root@ecs-c13b ~]# bash ysf.sh 
       false
       true
    

    문자열 연산 자
    다음 표 는 자주 사용 하 는 문자열 연산 자 를 보 여 줍 니 다. 변수 a 는 "abc"이 고 변 수 는 b 는 "efg"입 니 다.
    연산 자
    설명 하 다.
    예 를 들다
    =
    두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
    [$a = $b] false 를 되 돌려 줍 니 다.
    !=
    두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
    [$a! = $b] 트 루 로 돌아 갑 니 다.
    -z
    문자열 길이 가 0 인지, 0 인지 true 로 되 돌아 갑 니 다.
    [- z $a] false 로 돌아 갑 니 다.
    -n
    문자열 길이 가 0 인지, 0 이 아 닌 true 를 되 돌려 줍 니 다.
    [n "$a"] true 로 돌아 갑 니 다.
    $
    문자열 이 비어 있 는 지, 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
    [$a] 트 루 로 돌아 갑 니 다.
    문자열 연산 자 인 스 턴 스 는 다음 과 같 습 니 다:
    #!/bin/bash
    
    a="abc"
    b="efg"
    
    if [ $a = $b ]
    then
       echo "$a = $b : a    b"
    else
       echo "$a = $b: a     b"
    fi
    
    if [ $a != $b ]
    then
       echo "$a != $b : a     b"
    else
       echo "$a != $b: a    b"
    fi
    
    if [ -z $a ]
    then
       echo "-z $a :        0"
    else
       echo "-z $a :         0"
    fi
    
    if [ -n "$a" ]
    then
       echo "-n $a :         0"
    else
       echo "-n $a :        0"
    fi
    
    if [ $a ]
    then
       echo "$a :       "
    else
       echo "$a :      "
    fi
    

    결과 되 돌리 기:
    **[root@ecs-c13b ~]# bash ysf01.sh 
    abc = efg: a     b
    abc != efg : a     b
    -z abc :         0
    -n abc :         0
    abc :       **
    

    파일 테스트 연산 자
    파일 테스트 연산 자 는 유 닉 스 파일 의 각종 속성 을 검사 하 는 데 사 용 됩 니 다.속성 검사 설명 은 다음 과 같 습 니 다.
    조작 부호
    설명 하 다.
    예 를 들다
    -b file
    파일 이 블록 장치 파일 인지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
    [- b $file] false 를 되 돌려 줍 니 다.
    -c file
    파일 이 문자 장치 파일 인지 확인 하고 트 루 로 돌아 갑 니 다.
    [- c $file] false 를 되 돌려 줍 니 다.
    -d file
    파일 이 디 렉 터 리 인지 확인 하고 트 루 로 돌아 갑 니 다.
    [- d $file] false 를 되 돌려 줍 니 다.
    -f file
    파일 이 일반 파일 인지 확인 합 니 다 (디 렉 터 리 도 장치 파일 도 아 닙 니 다). 그렇다면 true 로 돌아 갑 니 다.
    [- f $file] true 로 돌아 갑 니 다.
    -g file
    파일 에 SGID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
    [- g $file] false 를 되 돌려 줍 니 다.
    -k file
    파일 에 붙 어 있 는 비트 (Sticky Bit) 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 되 돌려 줍 니 다.
    [- k $file] false 를 되 돌려 줍 니 다.
    -p file
    파일 이 유명 파이프 인지 확인 하고 트 루 로 돌아 갑 니 다.
    [- p $file] false 를 되 돌려 줍 니 다.
    -u file
    파일 에 SUID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
    [- u $file] false 를 되 돌려 줍 니 다.
    -r file
    파일 을 읽 을 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- r $file] true 를 되 돌려 줍 니 다.
    -w file
    파일 을 쓸 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- w $file] true 로 돌아 갑 니 다.
    -x file
    파일 이 실 행 될 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- x $file] true 로 돌아 갑 니 다.
    -s file
    파일 이 비어 있 는 지 확인 합 니 다 (파일 크기 가 0 이상 인지). 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
    [- s $file] true 로 돌아 갑 니 다.
    -e file
    파일 (디 렉 터 리 포함) 이 존재 하 는 지 확인 하고 트 루 로 돌아 갑 니 다.
    [- e $file] true 를 되 돌려 줍 니 다.
    기타 검사 문자:
  • - S: 어떤 파일 이 socket 인지 판단 합 니 다.
  • - L: 파일 이 존재 하 는 지 확인 하고 심 볼 릭 링크 입 니 다.

  • 총결산
    본 고 는 주로 각종 연산 자 를 소 개 했 는데 이런 연산 자 는 후기 에 셸 스 크 립 트 를 능숙 하 게 파악 하 는 데 기 초 를 다 졌 다.조건문 구 는 대부분 이런 연산 자 를 바탕 으로 판단 하기 때문이다.

    좋은 웹페이지 즐겨찾기