동적 변수를 사용한 배열 복사

동적 변수를 사용한 배열 복사

배열 아래에 24개의 요소가 저장된 배열이 있습니다.MBA_확장.

echo ${mba_ext[13]} gives me expected results.

이제 변수를 만들었습니다.temp="mba_ext"

이제 임시 변수를 사용하여 배열의 내용을 다른 배열로 복사하려고 합니다. 내가 작성한 코드는 다음과 같습니다.

new_array=$(eval echo '$'{${temp}[@]})

그렇게 하면 echo$new_array인덱스 없이 배열의 모든 내용이 인쇄됩니다.

드려도 echo ${new_array[4]}결과가 없습니다. 이상적으로는 이 명령은 인덱스 위치 4의 내용을 인쇄해야 합니다.

누구든지 도와줄 수 있나요?

답변1

기반으로이 답변은 슈퍼유저에 있습니다..

적절한 배열 [...]과 함께 변수 간접 참조를 사용할 수 있습니다. 까다로운 점은 [@]간접적으로 전달하려는 변수에 배열 요소(또는 모든 요소)를 포함 해야 한다는 것입니다 .

사용하는 이름이 포함된 샘플 코드:

mba_ext=('normal' 'with space' 'double"quote' "single'quote" $'new-\n-line' '\backslash')
temp="mba_ext"
temparray="${temp}[@]"   # This includes the array name AND "[@]"
new_array=("${!temparray}")
printf '<%s>\n' "${new_array[@]}"

관련 정보