Programing

Bash에서 인덱스를 지정하지 않고 배열에 새 요소 추가

lottogame 2020. 9. 30. 08:36
반응형

Bash에서 인덱스를 지정하지 않고 배열에 새 요소 추가


$array[] = 'foo';bash에서 PHP와 같은 작업을 수행하는 방법이 있습니까?

array[0] = 'foo'
array[1] = 'bar'

예 :

ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')

Bash 참조 설명서 :

할당 문이 쉘 변수 또는 배열 인덱스에 값을 할당하는 컨텍스트에서 (배열 참조) '+ ='연산자를 사용하여 변수의 이전 값에 추가하거나 추가 할 수 있습니다.


마찬가지로 멍청한 녀석이 지적, 그것은 제로의 배열이 시작 여부를주의하는 것이 중요하고 순차적입니다. 연속적이지 않은 인덱스에 할당하고 설정을 해제 할 수 있으므로 ${#array[@]}항상 배열의 끝에있는 다음 항목이 아닙니다.

$ array=(a b c d e f g h)
$ array[42]="i"
$ unset array[2]
$ unset array[3]
$ declare -p array     # dump the array so we can see what it contains
declare -a array='([0]="a" [1]="b" [4]="e" [5]="f" [6]="g" [7]="h" [42]="i")'
$ echo ${#array[@]}
7
$ echo ${array[${#array[@]}]}
h

마지막 색인을 얻는 방법은 다음과 같습니다.

$ end=(${!array[@]})   # put all the indices in an array
$ end=${end[@]: -1}    # get the last one
$ echo $end
42

그것은 배열의 마지막 요소를 얻는 방법을 보여줍니다. 다음과 같이 자주 볼 수 있습니다.

$ echo ${array[${#array[@]} - 1]}
g

보시다시피 희소 배열을 다루기 때문에 이것이 마지막 요소가 아닙니다. 이것은 희소 배열과 연속 배열 모두에서 작동합니다.

$ echo ${array[@]: -1}
i

$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest

배열이 항상 순차적이고 0에서 시작하는 경우 다음을 수행 할 수 있습니다.

array[${#array[@]}]='foo'

# gets the length of the array
${#array_name[@]}

실수로 등호 사이에 공백을 사용한 경우 :

array[${#array[@]}] = 'foo'

그러면 다음과 유사한 오류가 표시됩니다.

array_name[3]: command not found

인덱스 배열을 사용하면 다음과 같이 할 수 있습니다.

declare -a a=()
a+=('foo' 'bar')

참고 URL : https://stackoverflow.com/questions/1951506/add-a-new-element-to-an-array-without-specifying-the-index-in-bash

반응형