Bash에서 문자열 비교 방법

Bash에서 문자열 비교 방법

2022-06-01 last update

14 minutes reading terminal bash
Bash 스크립트를 작성할 때, 보통 두 개의 문자열을 비교하여 그것들이 같은지 확인해야 한다.두 문자열의 길이가 같고 같은 문자 서열을 포함할 때 서로 같다.이 강좌는 Bash에서 문자열을 비교하는 방법을 소개합니다.

비교 연산자

비교 연산자는 비교 값이true 또는false로 되돌아오는 연산자입니다.Bash에서 문자열을 비교할 때 다음과 같은 연산자를 사용할 수 있습니다.
  • string1 = string2string1 == string2- 조작수가 같으면true를 되돌려줍니다.
  • = 연산자를 test [ 명령과 함께 사용합니다.
  • == 연산자와 [[ 명령을 사용하여 패턴을 일치시킵니다.
  • string1 != string2- 조작수가 같지 않으면 부등식 연산자는true로 되돌아옵니다.
  • string1 =~ regex - 왼쪽 조작수가 오른쪽 확장 정규 표현식과 일치하면regex 연산자는true로 되돌아옵니다.
  • string1 > string2 - 왼쪽 조작수가 사전(알파벳) 순서로 정렬된 오른쪽 조작수보다 크면true로 돌아가는 연산자보다 크다.
  • string1 < string2 - 만약 오른쪽 조작수가 사전(알파벳) 순서로 정렬된 오른쪽 조작수보다 크면true로 돌아가는 연산자보다 작다.
  • -z string - 문자열의 길이가 0이면 True입니다.
  • -n string - 문자열의 길이가 0이 아니면 True입니다.
  • 문자열을 비교할 때 다음과 같은 몇 가지를 주의해야 한다.
  • 바이너리 연산자와 조작수 사이에는 반드시 공백을 사용해야 한다.
  • 은 모든 분사나 전역 검색 문제를 피하기 위해 변수 이름 주위에 쌍인용 번호를 사용합니다.
  • Bash는 유형에 따라 변수를 구분하지 않으며 상하문에 따라 변수는 정수 또는 문자열로 간주됩니다.
  • 두 문자열이 동일한지 확인

    대부분의 경우 문자열을 비교할 때 문자열이 동일한지 확인해야 합니다.다음 스크립트는 if statement을 사용합니다
    문자열이 [ 연산자와 같은지 확인하는 데 사용되는test= 명령:
    #!/bin/bash
    
    VAR1="Linuxize"
    VAR2="Linuxize"
    
    if [ "$VAR1" = "$VAR2" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
    
    이 스크립트를 실행할 때 다음 출력을 출력합니다.
    Strings are equal.
    
    이것은 사용자의 입력을 받아들여 주어진 문자열을 비교하는 또 다른 스크립트입니다.이 예에서 우리는 [[ 명령과 == 연산자를 사용할 것이다.
    #!/bin/bash
    
    read -p "Enter first string: " VAR1
    read -p "Enter second string: " VAR2
    
    if [[ "$VAR1" == "$VAR2" ]]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
    
    스크립트를 실행하고 제시할 때 문자열을 입력하십시오:
    Enter first string: Linuxize
    Enter second string: Ubuntu
    Strings are not equal.
    
    논리 and &&과 or||을 사용하여 문자열을 비교할 수 있습니다:
    [[ "string1" == "string2" ]] && echo "Equal" || echo "Not equal"
    
    Not equal
    

    문자열에 하위 문자열 포함 여부 확인

    문자열이 하위 문자열을 포함하는지 확인할 수 있는 여러 가지 방법이 있습니다.하나의 방법은 별표 *을 사용하여 하위 문자열을 둘러싸는 것이다. 이것은 모든 문자와 일치한다는 것을 의미한다.
    #!/bin/bash
    
    VAR='GNU/Linux is an operating system'
    if [[ $VAR == *"Linux"* ]]; then
      echo "It's there."
    fi
    
    스크립트는 echo
    다음 옵션:
    It's there.
    
    의 또 다른 옵션은 정규 표현식 연산자 =~을 사용하는 것입니다. 다음과 같습니다.
    #!/bin/bash
    
    VAR='GNU/Linux is an operating system'
    if [[ $VAR =~ .*Linux.* ]]; then
      echo "It's there."
    fi
    
    뒤에 별표의 마침표 .*과 0번 또는 여러 번 나타나는 문자(줄 바꿈 제외)와 일치합니다.

    문자열이 비어 있는지 확인합니다.

    은 일반적으로 변수가 빈 문자열인지 확인해야 한다.-n-z 연산자를 사용하여 이 작업을 수행할 수 있습니다.
    #!/bin/bash
    
    VAR=''
    if [[ -z $VAR ]]; then
      echo "String is empty."
    fi
    
    String is empty.
    
    #!/bin/bash
    
    VAR='Linuxize'
    if [[ -n $VAR ]]; then
      echo "String is not empty."
    fi
    
    String is not empty.
    

    Case 연산자와 문자열 비교

    테스트 조작부 대신 case statement을 사용할 수 있습니다
    비교 문자열:
    #!/bin/bash
    
    VAR="Arch Linux"
    
    case $VAR in
    
      "Arch Linux")
        echo -n "Linuxize matched"
        ;;
    
      Fedora | CentOS)
        echo -n "Red Hat"
        ;;
    esac
    
    Linuxize matched.
    

    사전 비교

    사전 비교는 일종의 조작으로 왼쪽에서 오른쪽으로 문자열 중의 문자를 순서대로 비교하고 자모순으로 두 문자열을 비교한다.이런 것은 비교적 적게 사용된다.다음 스크립트는 사전 순서대로 두 문자열을 비교합니다. (adsbygoogle = window.adsbygoogle | | []).푸시({});
    #!/bin/bash
    
    VAR1="Linuxize"
    VAR2="Ubuntu"
    
    if [[ "$VAR1" > "$VAR2" ]]; then
        echo "${VAR1} is lexicographically greater then ${VAR2}."
    elif [[ "$VAR1" < "$VAR2" ]]; then
        echo "${VAR2} is lexicographically greater than ${VAR1}."
    else
        echo "Strings are equal"
    fi
    
    스크립트는 다음과 같은 내용을 출력합니다.
    Ubuntu is lexicographically greater than Linuxize.
    

    결론

    비교 문자열은 Bash 스크립트에서 가장 기본적이고 자주 사용하는 작업 중 하나입니다.이 강좌를 다 읽은 후에 Bash에서 문자열을 비교하는 방법에 대해 잘 이해해야 합니다.여러분도 저희 안내서를 보실 수 있습니다. 약 string concatenation
    .질문이나 피드백이 있으면 언제든지 의견을 발표하십시오.