Bash 배열

Bash 배열

2022-06-01 last update

17 minutes reading terminal bash
수조는 가장 자주 사용되고 가장 기본적인 데이터 구조 중의 하나다.수조는 그 안에 여러 변수를 저장할 수 있는 변수라고 생각할 수 있다.본고에서, 우리는 Bash 수조를 소개하고, 어떻게 Bash 스크립트에서 그것들을 사용하는지 설명할 것이다.

Bash 배열

Bash는 1차원 디지털 인덱스와 관련 그룹 형식을 지원합니다.수치 그룹은 정수 참조를 사용하고 관련 그룹은 문자열 참조를 사용합니다.마이너스 인덱스를 사용하여 끝에서 디지털 인덱스 그룹에 접근할 수 있으며, 인덱스 -1 는 마지막 요소를 인용합니다.색인이 연속적일 필요는 없습니다.대부분의 프로그래밍 언어와 달리, Bash 그룹 요소는 같은 데이터 형식을 가지고 있을 필요가 없다.문자열과 숫자를 동시에 포함하는 그룹을 만들 수 있습니다.Bash는 다차원 그룹을 지원하지 않으며, 동시에 그룹의 그룹 요소가 있을 수 없습니다.그룹에 저장할 수 있는 최대 원소 수는 제한이 없습니다.

Bash 배열 생성

Bash의 수조는 다른 방식으로 초기화할 수 있다.

디지털 인덱스 배열 만들기

Bash 변수는 비형식적이며 모든 변수는 색인 그룹으로 사용할 수 있으며 설명할 필요가 없습니다.현식 성명 그룹을 사용하려면 declare builtin:
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이다.

연관 패턴 생성하기

디지털 인덱스와 달리 관련 수조는 반드시 먼저 성명한 후에야 사용할 수 있다.연관 그룹을 설명하려면 declare 내장된 -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_* 은 문자열일 수 있습니다.다음 표를 사용하여 연관 그룹을 만들 수도 있습니다. (adsbygoogle=window.adsbygoogle | [])푸시({});
declare -A array_name

array_name=( 
  [index_foo]=value_foo 
  [index_bar]=value_bar 
  [index_xyz]=value_xyz 
)

스토리지 작업

Bash수조 문법은 언뜻 보기에는 좀 이상할 수도 있지만 본문을 읽으면 더욱 의미가 있다.

참조 요소

단일 요소를 참조하려면 요소 인덱스를 알아야 합니다.다음 문법으로 모든 요소를 인용할 수 있습니다.
${array_name[index]}
액세스 그룹 요소의 문법은 대부분의 프로그래밍 언어의 문법과 비슷합니다.셸의 파일 이름 확장 연산자를 피하기 위해 괄호 ${} 가 필요합니다.색인이 1 인 요소를 인쇄합니다.
## 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 loop
:
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
순환 수조의 또 다른 방법은 수조의 길이를 가져오고 C style 순환을 사용하는 것입니다.
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
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

새 요소 추가

새로운 원소를 bash 수조에 추가하고 색인을 지정합니다.
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
이것은 예입니다.
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[@]}"

요소 삭제

단일 요소를 삭제하려면 요소 인덱스를 알아야 합니다.unset 명령을 사용하여 요소를 삭제할 수 있습니다.
Hydrogen Helium Lithium Beryllium Cobalt Nickel
예시를 보겠습니다.
unset my_array[index]

결론

우리는 디지털 인덱스와 관련 그룹을 만드는 방법을 설명했습니다.우리는 또한 수조를 두루 돌아다니며 수조의 길이를 계산하고 요소를 추가하고 삭제하는 방법을 보여 주었다.질문이나 피드백이 있으면 언제든지 의견을 발표하십시오.