bash script2023. 10. 16. 08:42

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/635485

리눅스 bash 스크립트에서 변수 또는 배열을 삭제하는 명령은 unset이다. 우선 변수에 대해서 아래의 예시를 보자.

# 문자열 "abc"를 변수 var에 할당
var="abc"

# 변수 var에 할당된 내용 출력
echo "$var"
abc

# 변수 var 삭제
unset var

# 변수 var에 할당된 내용 출력
echo "$var"

unset에서 지정하는 변수명 앞에 "$" 표시가 붙지 않는다는 점에 유의. 만약 "$"를 붙이면 해당 변수명이 아니라 변수에 할당된 값이 unset의 인자(argument)로 지정되기 때문이다.

배열에 대한 삭제/초기화 작업도 같은 요령이다.

우선, 리눅스 bash 스크립트에서 배열(array)을 활용하는 기본적인 방법은 이전 게시물을 참고하자. 여기로

연관배열(associative array)에 대한 기본적인 내용은 여기로

# x[1]에 abc, x[2]에 def 저장
x[1]="abc"
x[2]="def"

# 저장된 내용 확인
echo "${x[1]} ${x[2]}"
abc def

위의 예시에 대해 배열의 인덱스(index) 또는 키(key)를 출력(관련 내용은 여기로)해 보면 1과 2가 나와야 할 것이다.

# 배열의 인덱스/키 출력
echo ${!x[*]}
1 2

이제 unset 명령으로 x[1]을 삭제해 보자.

# x[1] 삭제
unset x[1]

다시 배열의 인덱스를 출력해 보면 x[1]이 사라졌음을 알 수 있다.

# 배열의 인덱스/키 출력
echo ${!x[*]}
2

인덱스를 문자열로 지정할 수 있는 연관배열도 마찬가지다.

# 연관배열 선언
declare -A xa

# 문자열 할당
xa[apple]="abc"
xa[orange]="def"

# 인덱스 확인
echo "${!xa[*]}"
apple orange

# xa[apple] 삭제
unset xa[apple]

# 인덱스 확인
echo "${!xa[*]}"
orange

배열 전체를 삭제/초기화하고 싶다면 for 반복문을 활용하면 되겠다.

# xa 전체 삭제
for idx in `echo "${!xa[*]}"`
do
  unset xa[$idx]
done

728x90
Posted by 반달가면