배열이 있습니다
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 인덱스이므로 작동합니다.길이배열의 인덱스는 추가 시 할당되어야 하는 다음으로 사용 가능한 인덱스이기도 합니다.