为什么函数中的变量值没有改变?

为什么函数中的变量值没有改变?

在以下函数中main_script,变量DEFAULT_BACKUP_DIR未按预期工作,因为/home/user/BACKUP未为其分配值,我不知道为什么,并且当我尝试在 if 语句中更新它时,它也不会更新

注 1:此函数位于我用来运行 Bach 脚本文件的 Makefile 中

注2:该变量DEFAULT_BACKUP_DIR在此函数中首次声明,并且仅在该函数范围内使用。

define main_script
@ $(call src_dir_check,$1)
DEFAULT_BACKUP_DIR=/home/user/BACKUP
if [ -d $2 ]
then
    echo "Backup directory -$2- do exist"
    DEFAULT_BACKUP_DIR=$2
else 
    echo "ERROR! Backup directory -$2- does not exist!"
    echo "Switched to default directory -$(DEFAULT_BACKUP_DIR)-"
fi
$(call run_script,$1,$(DEFAULT_BACKUP_DIR),$3,$4)
endef

我是这样称呼它的

.PHONY: run
run: display
    @ $(call main_script,$(SRC_DIR),$(BACKUP_DIR),$(TIME),$(MAX))

我在终端中输入以下内容来运行 Makefile

make run SRC_DIR=somedir BACKUP_DIR=somedir TIME=1 MAX=5

提前致谢...

相关内容