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_1
및 ArrayOfArray_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 환경에서만 작동합니다.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn