変数を含む配列要素を拡張する方法は?

変数を含む配列要素を拡張する方法は?

各要素に異なる変数を含めることができる配列があります。配列の割り当ては、次のファイルから来ます。

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

関連情報