将正则表达式模式存储在 bash 脚本中的变量中



我有以下bash脚本代码:

GOAL="${1:-help}"
TARGET="${2}"
MODULES_LIST="app|tester"
echo "-> Running $TARGET..."
MODULES_LIST_PATTERN = "^($MODULES_LIST)$"
if [[ "$TARGET" =~ $MODULES_LIST_PATTERN ]]; then
    run_${TARGET}
else
    print_error "You must include an existing module: {$MODULES_LIST}"
    exit 1
fi

如您所见,我有一个MODULES_LIST变量,用于存储应用程序支持的模块,然后我创建一个包含前一个 var 值的正则表达式模式MODULES_LIST_PATTERN,并使用它来检查提供的参数是否与任何模块匹配。但是,它没有按预期工作,因为当我运行./myscript.sh run app时它会打印ERROR] You must include an existing module: {app|tester}.

有人可以告诉我这样做的正确方法吗?

我的错...问题是MODULES_LIST_PATTERN = "^($MODULES_LIST)$",等号周围不能有空格。修复后,它按预期工作。

最新更新