반응형
Bash에서 인덱스를 지정하지 않고 배열에 새 요소 추가
$array[] = 'foo';
bash에서 PHP와 같은 작업을 수행하는 방법이 있습니까?
array[0] = 'foo'
array[1] = 'bar'
예 :
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
할당 문이 쉘 변수 또는 배열 인덱스에 값을 할당하는 컨텍스트에서 (배열 참조) '+ ='연산자를 사용하여 변수의 이전 값에 추가하거나 추가 할 수 있습니다.
마찬가지로 멍청한 녀석이 지적, 그것은 제로의 배열이 시작 여부를주의하는 것이 중요하고 순차적입니다. 연속적이지 않은 인덱스에 할당하고 설정을 해제 할 수 있으므로 ${#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')
반응형
'Programing' 카테고리의 다른 글
"+"(더하기 기호) CSS 선택기는 무엇을 의미합니까? (0) | 2020.09.30 |
---|---|
예외를 올바르게 무시하는 방법 (0) | 2020.09.30 |
Solr 대 ElasticSearch (0) | 2020.09.30 |
목록 (0) | 2020.09.30 |
ViewPager에서 조각이 표시되는시기를 확인하는 방법 (0) | 2020.09.30 |