Linux Bash shell script

Linux Bash Shell Script에서 배열 및 리스트 순회

임베디드 친구 2025. 1. 24. 08:38
반응형

Linux Bash에서는 배열과 리스트를 다루는 작업이 빈번합니다. 특히, 반복문과 결합하여 배열의 모든 요소를 순회하거나 처리해야 하는 경우가 많습니다. 이 글에서는 Bash에서 배열 및 리스트를 순회하는 다양한 방법과 실제 예제를 소개합니다.


1. Bash 배열 소개

Bash에서 배열은 여러 개의 값을 저장하는 데 사용됩니다. 배열은 declare -a 명령어로 선언하거나 단순히 값을 대입하여 사용할 수 있습니다. 배열의 인덱스는 0부터 시작합니다.

배열 선언 및 초기화

# 배열 선언
declare -a my_array

# 배열 초기화
my_array=("Apple" "Banana" "Cherry")

# 개별 요소 접근
echo "첫 번째 요소: ${my_array[0]}"
echo "두 번째 요소: ${my_array[1]}"

배열의 모든 요소 출력

# 모든 요소 출력
echo "배열의 모든 요소: ${my_array[@]}"

2. 배열 순회 방법

Bash에서 배열을 순회하는 방법은 다양합니다. 여기에서는 대표적인 3가지 방법을 살펴보겠습니다.

2.1 for 루프 사용

for 루프를 사용하여 배열의 모든 요소를 순회할 수 있습니다.

예제

#!/bin/bash

# 배열 초기화
fruits=("Apple" "Banana" "Cherry")

# for 루프를 사용한 배열 순회
for fruit in "${fruits[@]}"; do
    echo "과일: $fruit"
done

출력:

과일: Apple
과일: Banana
과일: Cherry

2.2 인덱스를 사용한 순회

배열의 인덱스를 직접 참조하여 순회할 수도 있습니다.

예제

#!/bin/bash

# 배열 초기화
numbers=(10 20 30 40)

# 배열 크기 구하기
length=${#numbers[@]}

# 인덱스를 사용한 배열 순회
for ((i = 0; i < length; i++)); do
    echo "인덱스 $i: ${numbers[i]}"
done

출력:

인덱스 0: 10
인덱스 1: 20
인덱스 2: 30
인덱스 3: 40

2.3 while 루프와 배열 순회

while 루프와 인덱스를 조합하여 배열을 순회할 수도 있습니다.

예제

#!/bin/bash

# 배열 초기화
colors=("Red" "Green" "Blue")

# 인덱스 초기화
index=0

# while 루프를 사용한 배열 순회
while [ $index -lt ${#colors[@]} ]; do
    echo "색상 $index: ${colors[index]}"
    ((index++))
done

출력:

색상 0: Red
색상 1: Green
색상 2: Blue

3. 리스트 순회

배열과 달리, 리스트는 주로 문자열로 표현되며, 공백이나 다른 구분자로 구분됩니다. 리스트를 순회하려면 for 루프를 주로 사용합니다.

리스트 순회 기본

#!/bin/bash

# 리스트 선언
list="one two three four"

# 리스트 순회
for item in $list; do
    echo "항목: $item"
done

출력:

항목: one
항목: two
항목: three
항목: four

IFS(Internal Field Separator) 변경

구분자가 공백이 아닌 경우, IFS를 변경하여 리스트를 처리할 수 있습니다.

예제

#!/bin/bash

# 리스트 선언
csv_list="apple,banana,cherry"

# IFS를 콤마로 변경
IFS="," read -r -a array <<< "$csv_list"

# 배열 순회
for item in "${array[@]}"; do
    echo "항목: $item"
done

출력:

항목: apple
항목: banana
항목: cherry

4. 실전 예제: 파일 이름 처리

배열과 리스트 순회는 파일 이름이나 디렉토리 내용을 처리하는 데 자주 사용됩니다.

디렉토리 내 파일 목록 순회

#!/bin/bash

# 디렉토리 내 파일 이름 가져오기
files=(/path/to/directory/*)

# 파일 목록 순회
for file in "${files[@]}"; do
    echo "파일 이름: $file"
done

출력 예시:

파일 이름: /path/to/directory/file1.txt
파일 이름: /path/to/directory/file2.txt
파일 이름: /path/to/directory/file3.txt

5. 마무리

Bash에서 배열 및 리스트를 순회하는 방법은 매우 유용하며, 다양한 작업에 응용할 수 있습니다. 배열을 선언하고 요소를 순회하는 방법을 익히면 Bash 스크립트 작성 시 생산성을 크게 높일 수 있습니다. 실습을 통해 배열 순회에 익숙해지길 바랍니다!

반응형