Bash Shell Script - 변수가 정의되었는지 확인하는 방법

By JS | Last updated: October 10, 2021

Linux의 Bash 쉘 스크립트에서 변수가 정의되어있는지 확인하는 방법을 소개합니다.

어떤 변수에 접근할 때, 그 변수가 정의되지 않아서 ""가 출력되는 것인지, 실제 값이 ""로 할당된 것인지 구분이 안될 수 있는데요. 이럴 때 변수가 정의되었는지 확인하여 알 수 있습니다.

Syntax

변수가 정의되어있는지 확인하는 테스트 연산자는 -v-z입니다.

[[ -v Variable_Name ]]  

[[ -z Variable_Name ]]  
  1. -v : 변수가 정의되어있을 때 True, 그렇지 않으면 False 리턴
  2. -z : 변수가 정의되어있을 때 False, 그렇지 않으면 True 리턴

1. '-v'로 변수 정의 확인

다음과 같이 -v 연산자로 변수가 정의되어있는지 확인할 수 있습니다.

#!/bin/bash

VAR="variable"

if [[ -v VAR ]];  
then  
  echo "VAR is set"  
else  
  echo "VAR is not set"
fi

if [[ -v VAR2 ]];  
then  
  echo "VAR2 is set"
else  
  echo "VAR2 is not set"
fi

Output:

$ bash example.sh
VAR is set
VAR2 is not set

2. '-z'로 변수 정의 확인

다음과 같이 -z로 변수가 정의되어있는지 확인할 수 있습니다. 파일이 존재할 때, -v와 리턴 값이 반대라는 것에 주의를 하시면 됩니다.

#!/bin/bash

VAR="variable"

if [[ -z ${VAR} ]];  
then  
  echo "VAR is not set"  
else  
  echo "VAR is set"
fi

if [[ -z ${VAR2} ]];  
then  
  echo "VAR2 not is set"
else  
  echo "VAR2 is set"
fi

Output:

$ bash example.sh
VAR is set
VAR2 is not set

3. unset으로 변수 정의가 제거되는 것 확인

unset은 선언된 변수를 제거하는 명령어입니다.

예를 들어, 아래 예제에서 VAR는 정의되었고 -v로 체크해보면 설정되었다고 나옵니다. 그 변수에 대해서 unset을 하고 다시 체크해보면 VAR는 정의되지 않았다고 리턴됩니다.

#!/bin/bash

VAR="variable"

if [[ -v VAR ]];  
then  
  echo "VAR is set"  
else  
  echo "VAR is not set"
fi

unset VAR

if [[ -v VAR ]];  
then  
  echo "VAR is set"  
else  
  echo "VAR is not set"
fi

Output:

$ bash example.sh
VAR is set
VAR is not set

References

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha