변수가 포함된 배열 요소를 확장하는 방법은 무엇입니까?

변수가 포함된 배열 요소를 확장하는 방법은 무엇입니까?

각 요소에 다른 변수가 포함될 수 있는 배열이 있습니다. 배열 할당은 다음과 같은 파일에서 나옵니다.

FILE_CLEANUP_DIR_ARR=($(cat cleanup.list | sed '/^[[:blank:]]*$/d' | sed '/^[#]/d'))

확장 변수를 사용하여 배열을 복원하는 방법.

TARGET_DIR=/SOMEROOTDIR

FILE_CLEANUP_DIR_ARR[0]말 그대로 가치가 있다$TARGET_DIR/SOMESUBDIR0

FILE_CLEANUP_DIR_ARR[1]말 그대로 가치가 있다$TARGET_DIR/SOMESUBDIR1

이 FILE_CLEANUP_DIR_ARR을 확장 변수로 복원하는 방법은 아래와 같습니다.

FILE_CLEANUP_DIR_ARR[0] = /SOMEROOTDIR/SOMESUBDIR0

FILE_CLEANUP_DIR_ARR[1] = /SOMEROOTDIR/SOMESUBDIR1

샘플 코드. 작동 안함.

i=0
for CDIR in "${FILE_CLEANUP_DIR_ARR[@]}";
do
FILE_CLEANUP_DIR_ARR[i]="$CDIR"
((i++))
done

답변1

읽기 입력 사용 시 변수 확장envsubst:

export TARGET_DIR=/some/path/
FILE_CLEANUP_DIR_ARR=($(awk '!/^ *#/ && NF' global_file_transfer_cleanup.list | envsubst))

( awk부분통과하다.)


나쁜 대안은 다음을 사용하는 것입니다 eval.

FILE_CLEANUP_DIR_ARR[i]=$(eval printf '%s' "$CDIR")

관련 정보