如何扩展包含变量的数组元素?

如何扩展包含变量的数组元素?

我有一个数组,其中每个元素都可能包含另一个变量。数组分配来自文件,如下所示:

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")

相关内容