리눅스 Bash shell script에서 [ 와 [[ 의 차이점

리눅스의 Bash Shell Script에서 [ 와 [[ 의 차이점에 대해 알아봅니다.
인프라코디
리눅스 Bash shell script에서 [ 와 [[ 의 차이점

리눅스의 Bash Shell Script에서 [[[의 차이점에 대해 알아봅니다.

[ 와 [[ 의 차이점

  • [ 는 sh 기반의 명령어로, 테스트나 조건식을 평가할 때 사용합니다. [ 는 실제로 /usr/bin/[ 라는 실행 파일이며, if나 while 등의 제어문과 함께 사용됩니다. [ 를 사용할 때는 공백과 따옴표에 주의해야 합니다. 예를 들어, [ $a = $b ] 는 에러가 발생하지만, [ "$a" = "$b" ] 는 정상적으로 작동합니다.
  • [[ 는 bash 기반의 키워드로, [ 보다 확장된 기능을 제공합니다. [[ 는 실행 파일이 아니라 쉘의 구성 요소이므로, 공백과 따옴표에 덜 민감합니다. 예를 들어, [[ $a = $b ]] 는 정상적으로 작동합니다. [[ 는 &&, || 등의 논리 연산자를 사용할 수 있으며, 패턴 매칭이나 정규식을 지원합니다. 예를 들어, [[ str= [0−9]+ ]]$str이 숫자로만 이루어져 있는지 검사합니다.

[ 와 [[ 의 사용 예제

다음은 [[[ 를 이용하여 문자열이 비어있는지 검사하는 쉘 스크립트입니다.

#!/bin/bash

str="Hello World"

# [를 사용하는 경우
if [ -z "$str" ]; then
  echo "str is empty"
else
  echo "str is not empty"
fi

# [[를 사용하는 경우
if [[ -z $str ]]; then
  echo "str is empty"
else
  echo "str is not empty"
fi
리눅스 Bash shell script에서 [ 와 [[ 의 차이점
리눅스 Bash shell script에서 [ 와 [[ 의 차이점
위의 스크립트를 실행하면 다음과 같은 결과가 나옵니다.
str is not empty
str is not empty

마무리

[[[ 모두 -z 옵션을 사용하여 문자열의 길이가 0인지 검사할 수 있습니다. 하지만 [ 를 사용할 때는 변수에 따옴표를 붙여야 하고, 공백도 잘 지켜야 합니다. [[ 를 사용할 때는 따옴표와 공백을 신경쓰지 않아도 됩니다.

인프라코디
서버, 네트워크, 보안 등 IT 인프라 관리를 하는 시스템 엔지니어로 일하고 있으며, IT 기술 정보 및 일상 정보를 기록하는 블로그를 운영하고 있습니다. 글을 복사하거나 공유 시 게시하신 글에 출처를 남겨주세요.

- 블로그 : www.infracody.com

이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.
댓글