배열 아래에 24개 요소의 배열이 저장되어 있습니다.mba_ext.
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[@]}"