Bash에서 인덱스 배열을 사용하는 방법

Basheseo Indegseu Baeyeol Eul Sayonghaneun Bangbeob



Bash는 기본적으로 인덱스 번호를 사용하여 액세스할 수 있는 요소 목록인 인덱스 배열을 지원합니다. 인덱스 배열은 많은 관련 값을 저장하고 조작하려는 경우에 특히 유용합니다. 인덱스 배열을 사용하는 방법은 이 문서를 참조하십시오.

인덱스 배열이란?

인덱스 배열은 인덱스나 키를 사용하여 액세스할 수 있는 bash의 요소 ​​모음입니다. 이러한 배열은 특정 순서로 데이터를 저장하고 검색하는 데 사용할 수 있으므로 많은 양의 데이터를 보다 쉽게 ​​관리할 수 있습니다. bash에서 인덱스 배열을 선언하는 구문은 다음과 같습니다.

< array_name > = ( 요소1 요소2 요소3 ... )

여기서 array_name은 배열의 이름이고 element1, element2, element3 등은 배열에 저장할 값입니다. 값은 공백으로 구분되며 선언 명령을 사용하여 배열을 만들 수도 있습니다.







Bash에서 인덱스 배열을 사용하는 방법

bash에서 인덱스 배열을 만들려면 변수를 선언하고 괄호로 묶고 공백으로 구분된 값을 할당하기만 하면 됩니다. 다음은 bash에서 인덱스 배열을 사용하는 방법을 보여주는 몇 가지 예입니다.



Bash에서 목록 재정렬

특정 순서의 항목 목록이 있고 다른 방식으로 다시 정렬하려는 경우. 다음과 같이 인덱스 배열을 사용하여 항목에 대한 새 주문을 생성할 수 있습니다.



#!/빈/배시
항목 = ( '망고' '파인애플' '딸기' '체리' '포도' )
주문하다 = ( 4 2 0 1 )
~을 위한 ~에 ' ${주문[@]} '
하다
에코 ${항목[$i]}
완료

이 예에서는 5개의 요소가 있는 항목이라는 배열을 만듭니다. 또한 항목에 대한 새 순서를 지정하는 order라는 인덱스 배열을 만듭니다. 그런 다음 주문 배열을 반복하고 각 값을 인덱스로 사용하여 항목 배열에서 해당 항목을 검색하고 인쇄합니다.

Bash에서 목록 필터링

항목 목록이 있고 조건에 따라 특정 항목을 필터링하려는 경우. 다음과 같이 인덱스 배열을 사용하여 조건을 충족하는 항목의 인덱스를 추적할 수 있습니다.

#!/빈/배시
항목 = ( '망고' '파인애플' '딸기' '체리' '포도' )
지수 = ( )

~을 위한 ~에 ' ${!항목[@]} '
하다
만약에 [ [ ${항목[$i]} == * '아르 자형' * ] ]
그 다음에
지수+= ( $i )
BE
완료

~을 위한 ~에 ' ${인덱스[@]} '
하다
에코 ${항목[$i]}
완료

이 예에서는 5개의 요소가 있는 항목이라는 배열을 만듭니다. 또한 인덱스라는 빈 인덱스 배열을 만듭니다. 그런 다음 항목 배열을 반복하고 각 항목에 문자 'r'이 포함되어 있는지 확인합니다. 그렇다면 인덱스 배열에 인덱스를 추가합니다. 마지막으로 인덱스 배열을 반복하고 각 값을 인덱스로 사용하여 항목 배열에서 해당 항목을 검색하고 출력합니다.

Bash에서 발생 횟수 계산

항목 목록이 있고 각 항목의 발생 횟수를 계산하려는 경우 인덱스 배열을 사용하여 개수를 추적할 수 있으며 다음은 데모의 예입니다.

#!/빈/배시
항목 = ( '망고' '파인애플' '딸기' '체리' '포도' )
카운트 = ( )

~을 위한 ~에 ' ${!항목[@]} '
하다
만약에 [ [ ! ' ${카운트[@]} ' =~ ' ${항목[$i]} ' ] ]
그 다음에
카운트+= ( ' ${항목[$i]} 1' )
또 다른
색인 =$ ( 에코 ' ${카운트[@]} ' | ' ' '\N' | 꽉 붙잡음 -N '^ ${항목[$i]} ' | ~와 함께 )
세다 =$ ( 에코 ' ${카운트[$인덱스-1]} ' | 자르다 -디 ' ' -f2 )
카운트 [ $인덱스 - 1 ] = ' ${항목[$i]} $((카운트+1) )'
BE
완료

~을 위한 세다 ~에 ' ${카운트[@]} '
하다
에코 $count
완료

먼저 문자열 목록으로 'items'라는 배열을 초기화합니다. 그런 다음 'counts'라는 빈 배열을 선언합니다. 'items' 배열의 각 항목을 반복하기 위해 for 루프가 생성되고 각 항목에 대해 'counts' 배열에 이미 존재하는지 확인합니다.

존재하지 않는 경우 'counts' 배열에 항목과 개수 1을 추가합니다. 존재하는 경우 'counts' 배열에서 해당 항목의 개수를 증가시킵니다. 마지막으로, 각 항목과 해당 개수를 출력하기 위해 또 다른 for 루프가 사용됩니다. 이 코드의 출력은 'items' 배열의 각 항목 수를 출력하며 중복 항목은 별도로 계산됩니다.

Bash에서 목록 업데이트

항목 목록이 있고 목록에서 항목을 추가하거나 삭제하려는 경우 인덱스 배열을 사용할 수 있으며 다음은 데모의 예입니다.

#!/빈/배시
항목 = ( '망고' '파인애플' '딸기' '체리' '포도' )

# 인덱스 2의 인덱스 배열에 새 요소 추가
항목 [ 6 ] = '주황색'
# 인덱스 배열에서 인덱스 2의 요소 삭제
설정 해제 항목 [ 2 ]

# 업데이트된 배열 출력
에코 ' ${항목[@]} '

스크립트에서 인덱스 배열 'items'는 5개의 초기 요소로 정의됩니다. 새 요소를 추가하려면 배열[인덱스]=값 구문을 사용하여 값을 원하는 인덱스에 할당하기만 하면 됩니다. 이 스크립트에서 'orange'는 배열의 인덱스 6에 추가됩니다. 요소를 삭제하려면 제거하려는 요소의 인덱스 다음에 unset 명령을 사용합니다. 이 경우 인덱스 2('딸기')의 요소가 삭제됩니다. 업데이트된 배열은 전체 배열을 확장하는 '${array[@]}' 구문을 사용하여 인쇄됩니다.

결론

인덱스 배열은 단일 변수를 사용하여 여러 값을 저장하고 조작할 수 있는 편리한 bash 구조입니다. 인덱스 배열의 구문과 사용법을 이해하면 보다 효율적이고 효과적인 bash 스크립트를 작성할 수 있습니다.