어레이는 가장 많이 사용되는 기본 데이터 구조 중 하나입니다. 배열은 배열 내에 여러 변수를 저장할 수 있는 변수라고 생각할 수 있습니다.
Bash 어레이에 대해 살펴보고 Bash 스크립트에서 어레이를 사용하는 방법에 대해 설명합니다.
배쉬 어레이
Bash는 1차원 수치 인덱싱 및 연결 어레이 유형을 지원합니다. 숫자 배열은 정수를 사용하여 참조되고 연관성은 문자열을 사용하여 참조됩니다.
숫자 인덱싱된 어레이는 음수 인덱스를 사용하여 끝에서 액세스할 수 있습니다. -1 색인은 마지막 요소를 참조합니다. 그 지수는 연속적일 필요는 없습니다.
대부분의 프로그래밍 언어와 달리 Bash 어레이 요소는 데이터 유형이 동일할 필요가 없습니다. 문자열과 숫자를 모두 포함하는 배열을 생성할 수 있습니다.
Bash는 다차원 어레이를 지원하지 않으며 어레이 요소도 마찬가지일 수 없습니다.
어레이에 저장할 수 있는 최대 요소 수에는 제한이 없습니다.
Bash 어레이 생성
Bash의 어레이는 다양한 방법으로 초기화할 수 있습니다.
숫자 인덱싱된 어레이 생성
Bash 변수는 입력되지 않으므로 선언하지 않고 모든 변수를 인덱스 어레이로 사용할 수 있습니다.
어레이를 명시적으로 선언하려면 기본 제공 선언을 사용합니다.
declare -a array_name
인덱스 배열을 생성하는 한 가지 방법은 다음 양식을 사용하는 것입니다.
array_name[index_1]=value_1
array_name[index_2]=value_2
array_name[index_n]=value_n
여기서 index_*는 양의 정수입니다.
숫자 배열을 만드는 또 다른 방법은 괄호 안의 요소 목록을 빈 공간으로 구분하여 지정하는 것입니다.
array_name=( element_1 element_2 element_N )
위의 양식을 사용하여 어레이를 생성할 때 인덱싱은 0에서 시작됩니다. 즉, 첫 번째 요소의 인덱스는 0입니다.
연결 어레이 생성
숫자 인덱싱과 달리 연결 어레이를 사용하려면 먼저 해당 어레이를 선언해야 합니다.
연결 어레이를 선언하려면 -A(대문자) 옵션과 함께 기본 제공 선언을 사용합니다.
declare -A array_name
연결 어레이는 다음 양식을 사용하여 생성할 수 있습니다.
declare -A array_name
array_name[index_foo]=value_foo
array_name[index_bar]=value_bar
array_name[index_xyz]=value_xyz
여기서 index_*는 임의의 문자열일 수 있습니다.
아래 양식을 사용하여 연결 배열을 생성할 수도 있습니다.
declare -A array_name
array_name=(
[index_foo]=value_foo
[index_bar]=value_bar
[index_xyz]=value_xyz
)
어레이 작업
Bash 어레이 구문은 처음에는 조금 이상하게 보일 수 있지만, 이 문서를 읽고 나면 더 의미가 있을 것입니다.
참조 요소
단일 요소를 참조하려면 요소 인덱스를 알아야 합니다.
다음 구문을 사용하여 모든 요소를 참조할 수 있습니다.
${array_name[index]}
어레이 요소에 액세스하는 구문은 대부분의 프로그래밍 언어의 구문과 유사합니다. 셸의 파일 이름 확장 연산자를 방지하려면 중괄호 ${}가 필요합니다.
다음 색인으로 요소를 인쇄하겠습니다.
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print element
echo ${my_array[1]}
# Helium
@ 또는 *를 인덱스로 사용하는 경우 단어는 어레이의 모든 멤버로 확장됩니다. 사용할 모든 요소를 출력하려면 다음을 수행합니다.
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${my_array[@]}"
# Hydrogen Helium Lithium Beryllium
@와 *의 유일한 차이점은 ${my_array[x]} 형식이 큰따옴표로 둘러싸여 있을 때입니다. 이 경우 *는 어레이 요소가 공백으로 구분되는 단일 단어로 확장됩니다. @는 각 어레이 요소를 별도의 단어로 확장합니다. 이는 어레이 요소를 통한 문맹을 위해 양식을 사용할 때 특히 중요합니다.
어레이의 키를 인쇄하려면 어레이 이름 앞에 ! 연산자를 추가합니다.
${!array_name[index]}
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${!my_array[@]}"
# 0 1 2 3
배열 길이
배열 길이를 가져오려면 다음 양식을 사용하십시오.
${#array_name[@]}
이 구문은 어레이 이름 앞에 # 문자가 추가된 모든 요소를 참조할 때와 동일합니다.
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## array Length
echo ${#my_array[@]}
# 4
어레이를 루프
어레이의 각 항목에 대해 반복하는 가장 일반적인 방법은 for 루프를 사용하는 것입니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${my_array[@]}"
do
echo "$i"
done
# Hydrogen
# Helium
# Lithium
# Beryllium
위의 코드가 어레이에 반복되고 각 요소가 새 줄로 인쇄됩니다.
다음은 모든 키와 값을 인쇄하는 방법의 예입니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${!my_array[@]}"
do
echo "$i" "${my_array[$i]}"
done
# 0 Hydrogen
# 1 Helium
# 2 Lithium
# 3 Beryllium
어레이를 루프하는 또 다른 방법은 어레이 길이를 가져오고 C 스타일 루프를 사용하는 것입니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
# Length of the array
length=${#my_array[@]}
# Array Loop
for (( i=0; i < ${length}; i++ ))
do
echo $i ${my_array[$i]}
done
# 0 Hydrogen
# 1 Helium
# 2 Lithium
# 3 Beryllium
새 요소를 추가
새 요소를 bash 어레이에 추가하고 인덱스를 지정하려면 다음 양식을 사용합니다.
my_array[index_n]="New Element"
다음은 예입니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new element
my_array[9]="Aluminum"
## print all elements
echo "${my_array[@]}"
# Hydrogen Helium Lithium Beryllium Aluminum
인덱스를 지정하지 않고 어레이에 새 요소를 추가하는 또 다른 방법은 += 연산자를 사용하는 것입니다. 하나 이상의 요소를 추가할 수 있습니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new elements
my_array+=( Cobalt Nickel )
## print all elements
echo "${my_array[@]}"
# Hydrogen Helium Lithium Beryllium Cobalt Nickel
요소를 삭제
단일 요소를 삭제하려면 요소 인덱스를 알아야 합니다. 설정 해제된 명령을 사용하여 요소를 제거할 수 있습니다.
unset my_array[index]
예를 들어 보겠습니다.
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## remove element
unset my_array[2]
## print all elements
echo "${my_array[@]}"
# Hydrogen Helium Beryllium
'SW > 리눅스' 카테고리의 다른 글
Linux : Apache 명령어, 예제, 사용 방법 (0) | 2021.09.15 |
---|---|
Linux : Bash : if..else 문 사용법, 예제, 명령어 (0) | 2021.09.14 |
Raspberry Pi : Plex Media Server 설치 방법, 예제, 명령어 (1) | 2021.09.12 |
Linux : Cent OS 부팅 USB 만드는 방법, 예제, 명령어 (0) | 2021.09.11 |
CentOS 7 : VLC Media Player 설치 방법, 예제, 명령어 (0) | 2021.09.09 |