我从一名前员工那里留下了一些遗留的bash代码来重写(并在我使用时添加文档)。我不知道最后两行eval
的重点是什么,考虑到这些变量是本地的。
function gen_data_dir {
local NAME="$1"
local DB_DIR_VAR="$2"
local TECH_DIR_VAR="$3"
local CFG="$DB_CONFIGS_DIR/$NAME"
if [[ ! -f "$CFG" ]]; then
echo "no config: $CFG" > /dev/stderr
return 127
fi
echo "processing config: $CFG" > /dev/stderr
local DB_DIR_="$ANNO_DB_DIR/${NAME}"
mkdir -p "$DB_DIR_" || return 127
pushd "$DB_DIR_"
LC_ALL=C date > DATES
touch _SHIT
local TECH_="$DB_DIR_/tech"
mkdir -p "$TECH_"
cat "$CFG" > "$TECH_/orig.cfg"
${GENOME_DIR}/annotation/parse_db_configs.py "$CFG" "$TECH_"
rm _SHIT
popd
eval "$DB_DIR_VAR"="$DB_DIR_"
eval "$TECH_DIR_VAR"="$TECH_"
}
我错过了什么吗?我是否正确地假设开始使用DB_DIR_VAR
和TECH_DIR_VAR
毫无意义,因为它们的初始值从未使用过?
答案 0 :(得分:1)
它没有设置DB_DIR_VAR
和TECH_DIR_VAR
- 它设置了在这两个变量中设置名称的变量。因此,如果DB_DIR_VAR
等于THE_DB_DIR
,则会将THE_DB_DIR
设置为DB_DIR_
的值。