셸 배열 (Shell Arrays)

ShellBeginner
지금 연습하기

소개

이 실습에서는 셸 프로그래밍에서 배열을 다루는 방법을 배웁니다. 배열은 하나의 이름 아래 여러 값을 저장할 수 있는 데이터 구조로, 데이터를 체계적으로 관리하고 조작하는 데 매우 유용합니다. 배열을 초기화하고, 요소를 추가하며, 인덱스를 통해 특정 요소에 접근하고, 배열에 담긴 전체 요소의 개수를 확인하는 방법을 익히게 됩니다. 이러한 지식은 더욱 복잡한 셸 스크립트 작성과 데이터 처리 작업을 수행하는 데 필수적인 기초가 됩니다.

이 과정은 단계별 안내에 따라 학습하고 실습할 수 있는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 실습은 초급 수준이며, 97%의 높은 수료율과 학습자들로부터 100%의 긍정적인 평가를 받고 있습니다.

새로운 셸 스크립트 파일 생성하기

먼저 배열 작업을 작성할 새로운 셸 스크립트 파일을 만드는 것부터 시작해 보겠습니다.

  1. WebIDE 에서 터미널을 엽니다.

  2. 프로젝트 디렉토리로 이동합니다:

    cd ~/project
  3. touch 명령어를 사용하여 arrays.sh라는 이름의 새 파일을 생성합니다:

    touch arrays.sh
  4. WebIDE 에서 arrays.sh 파일을 엽니다.

빈 배열 초기화하기

스크립트 파일이 준비되었으니, 이제 세 개의 빈 배열을 초기화해 보겠습니다.

arrays.sh 파일에 다음 코드를 추가하세요:

#!/bin/bash

## Initialize empty arrays
NUMBERS=()
STRINGS=()
NAMES=()

코드의 의미를 살펴보겠습니다:

  • 첫 번째 줄의 #!/bin/bash는 쉬뱅 (shebang) 이라고 불립니다. 이 스크립트가 Bash 셸에 의해 실행되어야 함을 시스템에 알려줍니다.
  • NUMBERS, STRINGS, NAMES라는 세 개의 빈 배열을 생성하고 있습니다.
  • () 구문은 빈 배열을 초기화할 때 사용합니다.

배열에 요소 추가하기

빈 배열을 만들었으니 이제 요소를 채워 넣을 차례입니다.

arrays.sh 파일의 배열 초기화 코드 아래에 다음 내용을 추가하세요:

## Add elements to NUMBERS array
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## Add elements to STRINGS array
STRINGS+=("hello")
STRINGS+=("world")

## Add elements to NAMES array
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

코드의 역할은 다음과 같습니다:

  • += 연산자를 사용하여 배열의 끝에 요소를 추가합니다.
  • NUMBERS 배열에는 정수 1, 2, 3 을 추가합니다.
  • STRINGS 배열에는 "hello"와 "world"라는 단어를 추가합니다.
  • NAMES 배열에는 "John", "Eric", "Jessica" 세 명의 이름을 추가합니다.
  • 문자열 요소는 따옴표로 감싸야 하지만, 숫자는 따옴표가 없어도 됩니다.

배열의 요소 개수 확인하기

배열을 다룰 때 가장 자주 하는 작업 중 하나는 배열에 몇 개의 요소가 들어 있는지 확인하는 것입니다. NAMES 배열을 대상으로 확인해 보겠습니다.

arrays.sh 파일에 다음 코드를 추가하세요:

## Get the number of elements in the NAMES array
NumberOfNames=${#NAMES[@]}

이 코드는 다음과 같이 동작합니다:

  • ${#NAMES[@]} 구문은 NAMES 배열의 전체 요소 개수를 반환합니다.
  • 이 값을 NumberOfNames라는 변수에 저장합니다.
  • 대괄호 안의 @ 기호는 배열의 모든 요소를 참조한다는 의미입니다.
  • 변수명 앞의 # 기호는 셸에게 요소의 개수를 세도록 지시합니다.

특정 배열 요소에 접근하기

이번에는 NAMES 배열에서 특정 위치의 값을 가져와 보겠습니다. 두 번째 이름을 추출해 봅시다.

arrays.sh 파일에 다음 코드를 추가하세요:

## Access the second name in the NAMES array
second_name=${NAMES[1]}

코드의 의미는 다음과 같습니다:

  • ${NAMES[1]}을 사용하여 NAMES 배열의 두 번째 요소에 접근합니다.
  • Bash 에서 배열 인덱스는 0 부터 시작하므로, [1]이 실제로는 두 번째 요소를 가리킵니다.
  • 가져온 값을 second_name이라는 변수에 저장합니다.

배열과 변수 출력하기

마지막으로, 지금까지 수행한 작업의 결과를 확인할 수 있도록 배열과 변수를 출력하는 코드를 추가하겠습니다.

arrays.sh 파일의 끝에 다음 코드를 추가하세요:

## Print the arrays and variables
echo "NUMBERS array: ${NUMBERS[@]}"
echo "STRINGS array: ${STRINGS[@]}"
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is: $second_name"

이 코드는 다음과 같이 동작합니다:

  • echo 명령어를 사용하여 콘솔에 문자열을 출력합니다.
  • ${NUMBERS[@]}${STRINGS[@]}는 해당 배열의 모든 요소를 출력합니다.
  • 앞서 생성한 NumberOfNamessecond_name 변수의 값을 출력합니다.

스크립트 실행하기

스크립트 작성이 완료되었습니다. 이제 실행하여 결과를 확인해 봅시다.

  1. 터미널에서 현재 위치가 올바른지 확인합니다:

    cd ~/project
  2. 스크립트에 실행 권한을 부여합니다:

    chmod +x arrays.sh
  3. 스크립트를 실행합니다:

    ./arrays.sh

다음과 같은 결과가 출력되어야 합니다:

NUMBERS array: 1 2 3
STRINGS array: hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric

출력 내용을 통해 배열 작업이 성공적으로 수행되었음을 알 수 있습니다:

  • NUMBERS 배열에 1, 2, 3 이 들어 있습니다.
  • STRINGS 배열에 "hello"와 "world"가 들어 있습니다.
  • NAMES 배열의 이름 개수가 3 개로 정확히 계산되었습니다.
  • 두 번째 이름인 "Eric"을 성공적으로 가져왔습니다.

요약

이 실습을 통해 셸 스크립트에서 배열을 다루는 핵심적인 방법들을 배웠습니다. 배열을 초기화하고, 요소를 추가하며, 특정 요소에 접근하고, 전체 크기를 확인하는 과정을 직접 실습해 보았습니다. 이러한 기술은 데이터 목록을 처리하거나 여러 항목에 대해 반복적인 작업을 수행해야 하는 고급 셸 스크립팅에서 매우 중요합니다. 배열은 스크립트 내에서 데이터를 체계적으로 관리하고 조작할 수 있는 강력한 수단을 제공하여, 코드를 더 효율적이고 관리하기 쉽게 만들어 줍니다.