HOWTO · Bash

Bash의 다차원 배열

이 튜토리얼에서는 Bash의 다차원 배열에 대해 설명합니다.

다차원 배열은 모든 프로그램에서 매우 중요한 요소입니다. 주로 데이터의 테이블 뷰를 생성하고 다른 많은 목적을 위해 사용됩니다.

이 문서에서는 2차원 배열을 만드는 방법을 보여 줍니다. 또한 필요한 예와 설명으로 주제를 논의합니다.

여기서는 두 가지 다른 방법에 대해 설명합니다.

Bash에서 다차원 배열을 선언하는 기본 방법

다차원 배열을 만드는 가장 기본적인 방법입니다. 아래 예제에서는 매우 기본적인 2차원 배열을 만듭니다.

아래는 예제 코드입니다.

ArrayOfArray_1=("Alen" "24")
ArrayOfArray_2=("Walker" "31")
MainArray=(
  ArrayOfArray_1[@]
  ArrayOfArray_2[@]
)

ArrayLength=${#MainArray[@]}
for ((i=0; i<$ArrayLength; i++))
do
  name=${!MainArray[i]:0:1}
  age=${!MainArray[i]:1:1}
  echo "Name : ${name}"
  echo "Age : ${age}"
done

위의 코드는 ArrayOfArray_1ArrayOfArray_2라는 두 개의 서로 다른 배열을 선언했음을 보여줍니다. 그 후, 우리는 우리가 최근에 선언한 이 두 개의 배열을 요소로 하는 기본 배열을 선언했습니다.

그런 다음 루프의 배열 길이를 계산했습니다. 루프 내에서 기본 배열을 인덱싱하여 이 두 하위 배열에서 데이터를 추출합니다.

마지막으로 최종 결과를 반향합니다. 스크립트를 실행하면 아래와 같은 출력이 표시됩니다.

Name : Alen
Age : 24
Name : Walker
Age : 31

Bash에서 연관 배열을 사용하여 2차원 배열 선언

이 방법은 약간 복잡합니다. 이 방법은 연관 배열이라는 특수 Bash 스크립트 배열에 대해 설명합니다.

연관 배열은 문자열 값을 키 또는 인덱스로 저장할 수 있는 특수 배열입니다. 다른 프로그래밍 언어와 비슷합니다.

연관 배열을 선언하기 위한 일반 구문은 declare -A ArrayName입니다.

아래 예제는 5개의 행과 6개의 열을 포함하는 2D 배열을 생성합니다. 아래는 예제 코드입니다.

declare -A Array2D
RowNum=5
ColumnNum=6

for ((i=1;i<=RowNum;i++)) do
    for ((j=1;j<=ColumnNum;j++)) do
        Array2D[$i,$j]=$RANDOM
    done
done

f1="%$((${#RowNum}+1))s"
f2=" %9s"

printf "$f1" ''
for ((i=1;i<=RowNum;i++)) do
    printf "$f2" $i
done
echo

for ((j=1;j<=ColumnNum;j++)) do
    printf "$f1" $j
    for ((i=1;i<=RowNum;i++)) do
        printf "$f2" ${Array2D[$i,$j]}
    done
    echo
done

위의 예에서 Array2D라는 연관 배열을 선언했습니다.

그런 다음 두 개의 변수를 만들고 정수 값을 할당했습니다. 이 정수 값은 행과 열의 수를 지정합니다.

그런 다음 배열을 난수로 채우는 중첩 루프를 만들었습니다.

이제 배열 선언 및 구성이 끝났습니다. 2D 배열이 어떻게 생겼는지 확인할 시간입니다.

코드에서 볼 수 있듯이 일부 루프를 사용하여 이를 수행합니다. 위의 스크립트를 실행하면 아래와 같은 출력이 표시됩니다.

           1         2         3         4         5
 1     16700      5241      2599     24330      1662
 2     23264     19557     10425     13413     25606
 3     17987      4199     13598     23897     26734
 4     24420     27830     24855      8165     13531
 5     15495     18790     13347     12947     11826
 6     23458     22838       137     32454     32441

이 문서의 모든 코드는 Bash로 작성되었습니다. Linux Shell 환경에서만 작동합니다.