Bash 배열 추가 요소 문제

Bash 배열 추가 요소 문제

배열이 있습니다

declare -a her=("ger" "blr" "tyg" "")

for i in "${her[@]}"; do
    echo $i
done

알겠어요

ger
blr
tyg

하지만 배열에 추가하려고 하면 공백 없이 긴 문자열이 표시됩니다.

declare -a you

#without quotes and with quotes
#' " same result

for i in {"fgt","fe","ger"}; do
    you+=${i}
done

for i in "${you[@]}"; do
    $i
done

Fgtfeger

무슨 일이 일어나고 있는지에 대한 통찰력이 있습니까? 일종의 유용성을 떨어뜨립니다.

답변1

배열 복합 할당 구문을 사용하고, 그렇지 않으면 길이를 인덱스로 사용합니다.

다음 방법 중 하나를 사용하여 배열에 추가해야 합니다.복합 할당 구문(예 foo=("elem1" ...)를 들어 배열 인덱스.

배열 복합 할당 구문

괄호로 묶인 형식을 사용하면 한 번에 하나 이상의 요소를 삽입할 수 있으며 읽기가 더 쉽습니다. 예를 들어:

# start with a clean slate
unset you

for i in "fgt" "fe" "ger"; do
    you+=("$i")
done

printf "%s\n" "${you[@]}"

그러면 예상한 값이 생성됩니다.

fgt
fe
ger

인덱스에 삽입길이

인덱스를 할당해도 비슷한 결과를 얻을 수 있습니다. 예를 들어:

unset you
for i in "fgt" "fe" "ger"; do
    you[${#you[@]}]="$i"
done
printf "%s\n" "${you[@]}"

두 번째 예는 Bash 배열이 0 인덱스이므로 작동합니다.길이배열의 인덱스는 추가 시 할당되어야 하는 다음으로 사용 가능한 인덱스이기도 합니다.

관련 정보