반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: tail] 텍스트 파일 내용의 끝부분 출력 (0) | 2023.10.16 |
---|---|
[bash: sed] 행 맨 앞에 있는 공백 제거 (0) | 2023.10.16 |
[bash:awk] awk를 이용한 분산/표준편차 계산 (0) | 2023.10.12 |
[bash:awk] awk를 이용한 평균값 계산 (0) | 2023.10.12 |
상관 관계 자료를 2차원 연관 배열(associative array)에 할당 (1) | 2023.10.11 |