Linux

如何擴展包含變數的數組元素?

  • August 22, 2019

我有一個數組,其中每個元素都可能包含另一個變數。數組分配來自一個文件,如下所示:

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

如何使用擴展變數恢復 aray。

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

使用 讀取輸入時展開變數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")

引用自:https://unix.stackexchange.com/questions/536863