Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Bash 배열 완벽 가이드 – Bash 스크립트에서 문자열 배열 선언하고 사용하는 법

Bash 스크립트는 명령줄 작업을 자동화할 수 있는 편리한 방법을 제공합니다.

Bash를 사용하면 다른 스크립트 언어나 프로그래밍 언어에서 하듯이 변수를 만들고 사용하거나, 반복문을 실행하고, 조건 로직을 활용하며, 배열에 데이터를 저장하는 등 다양한 작업을 수행할 수 있습니다.

기능 자체는 익숙할지 몰라도 Bash의 문법은 다른 언어와 미묘하게 달라 까다롭게 느껴질 수 있습니다. 이 글에서는 Bash에서 배열을 선언하는 방법과 작성한 코드에서 배열을 활용하는 방법을 차근차근 알아보겠습니다.

Bash에서 배열 선언하는 방법

Bash에서 배열을 선언하는 것은 어렵지 않습니다. 다만 다른 언어에 익숙하다면 놓치기 쉬운 사소한 문법 차이가 있으니 주의해야 합니다.

배열을 선언하려면 다음 단계를 따르세요.

  1. 배열에 이름을 붙입니다
  2. 변수 이름 뒤에 등호(=)를 붙입니다. 등호 앞뒤에는 공백이 있으면 안 됩니다
  3. 배열 전체를 소괄호 ()로 감쌉니다. JavaScript처럼 대괄호 []를 사용하지 않습니다
  4. 각 문자열은 따옴표로 묶되, 문자열 사이에 쉼표를 넣지 않습니다

완성된 배열 선언문은 다음과 같은 형태입니다.

myArray=("cat" "dog" "mouse" "frog")

이것으로 끝입니다! 정말 간단하죠?

Bash에서 배열에 접근하는 방법

배열을 순회하는 방법은 크게 두 가지가 있습니다. 요소 자체를 하나씩 꺼내며 반복하는 방법과, 인덱스를 기준으로 반복하는 방법입니다.

배열 요소 순회하기

배열의 요소를 하나씩 순회하려면 코드를 다음과 같이 작성합니다.

for str in ${myArray[@]}; do
  echo $str
done

코드를 해석해 보면 JavaScript의 forEach와 비슷한 동작을 합니다. 즉, 배열(myArray)에 있는 각 문자열(str)마다 해당 문자열을 출력하라는 의미입니다.

이 반복문을 실행하면 다음과 같은 결과가 출력됩니다.

cat
dog
mouse
frog

참고: 대괄호 안의 @ 기호는 배열의 모든 요소를 순회하겠다는 의미입니다. 이 기호를 생략하고 for str in ${myArray}라고만 작성하면 배열의 첫 번째 문자열만 출력됩니다.

배열 인덱스 순회하기

반대로 배열의 인덱스를 기준으로 순회할 수도 있습니다. JavaScript의 for 루프와 유사하며, 각 요소의 인덱스 값 자체가 필요할 때 특히 유용합니다.

이 방식을 사용하려면 코드를 다음과 같이 작성합니다.

for i in ${!myArray[@]}; do
  echo "element $i is ${myArray[$i]}"
done

실행 결과는 다음과 같습니다.

element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog

참고: myArray 변수 앞에 붙은 느낌표(!)는 배열의 요소가 아니라 인덱스에 접근하겠다는 의미입니다. 보통 느낌표는 부정(not)을 나타내는 데 쓰이기 때문에 처음에는 혼란스러울 수 있으니 유의하세요.

추가 참고: Bash는 일반적으로 변수를 참조할 때 중괄호를 생략해도 되지만, 배열은 예외적으로 중괄호가 반드시 필요합니다. 그래서 배열을 참조할 때는 ${myArray}처럼 중괄호를 사용하고, 문자열이나 숫자 변수를 참조할 때는 $i처럼 달러 기호만 붙여 사용합니다.

특정 요소에 접근하고 배열 길이 확인하기

인덱스를 직접 지정하면 배열의 특정 요소에 바로 접근할 수 있으며, 배열 이름 앞에 # 기호를 붙이면 배열의 길이를 구할 수 있습니다.

echo ${myArray[0]}      # cat (첫 번째 요소)
echo ${myArray[-1]}     # frog (마지막 요소)
echo ${#myArray[@]}     # 4 (배열 길이)

마치며

Bash 스크립트는 반복적인 명령줄 작업을 자동화하는 데 매우 유용하며, 배열은 여러 데이터를 한곳에 저장하고 관리할 수 있는 강력한 도구입니다.

배열을 선언하고 사용하는 것 자체는 어렵지 않지만, 문법이 다른 프로그래밍 언어와 상당히 다르기 때문에 오늘 살펴본 세부 사항들을 잘 기억해 두어야 실수를 피할 수 있습니다.