Linux
如何擴展包含變數的數組元素?
我有一個數組,其中每個元素都可能包含另一個變數。數組分配來自一個文件,如下所示:
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")