unset
요소를 제거합니다. 나머지 요소의 번호는 변경하지 않습니다.
우리는 declare -p
정확히 무슨 일이 일어나는지 볼 수 있습니다 numbers
.
$ unset "numbers[i]"
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
numbers
더 이상 요소가 없는지 확인 하십시오 4
.
다른 예시
관찰 :
$ a=()
$ a[1]="element 1"
$ a[22]="element 22"
$ declare -p a
declare -a a=([1]="element 1" [22]="element 22")
배열 a
에는 요소 2-21이 없습니다. Bash에서는 배열 인덱스가 연속적 일 필요는 없습니다.
인덱스의 번호를 다시 매기도록 제안 된 방법
numbers
누락 된 요소 가있는 배열 부터 시작하겠습니다 4
.
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
지수를 변경하려면 다음을 수행하십시오.
$ numbers=("${numbers[@]}")
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [4]="69" [5]="8" [6]="7" [7]="1")
이제 요소 번호 4
가 있으며 value 69
입니다.
한 단계에서 요소를 제거하고 배열의 번호를 다시 매기는 다른 방법
다시 정의하자 numbers
.
$ numbers=(53 8 12 9 784 69 8 7 1)
주석에서 Toby Speight 가 제안한 것처럼 네 번째 요소를 제거하고 나머지 요소의 번호를 한 번에 모두 다시 지정하는 방법입니다.
$ numbers=("${numbers[@]:0:4}" "${numbers[@]:5}")
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [4]="69" [5]="8" [6]="7" [7]="1")
보시다시피, 네 번째 요소가 제거되고 나머지 모든 요소의 번호가 다시 매겨졌습니다.
${numbers[@]:0:4}
slices array numbers
: 요소 0으로 시작하는 처음 4 개의 요소를 사용합니다.
마찬가지로 ${numbers[@]:5}
slice 배열 numbers
: 요소 5로 시작하여 배열 끝까지 모든 요소를 가져옵니다.
배열의 인덱스 얻기
배열 의 값 은로 얻을 수 있습니다 ${a[@]}
. 해당 값에 해당하는 인덱스 (또는 키 ) 를 찾으려면을 사용하십시오 ${!a[@]}
.
예를 들어 numbers
누락 된 요소가있는 배열 을 다시 고려하십시오 4
.
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
할당 된 인덱스를 확인하려면
$ echo "${!numbers[@]}"
0 1 2 3 5 6 7 8
다시, 4
지수 목록에서 누락되었습니다.
선적 서류 비치
보낸 사람 man bash
:
unset
내장 배열을 파괴하는 데 사용됩니다. unset name[subscript]
index의 배열 요소를 삭제합니다 subscript
. 인덱스 배열에 대한 음의 아래 첨자는 위에서 설명한대로 해석됩니다. 경로 이름 확장으로 인한 원하지 않는 부작용을 피하기 위해주의를 기울여야합니다. unset name
여기서, name
배열, 또는 unset name[subscript]
, 여기서 subscript
이고 *
또는 @
전체 어레이를 제거한다.