检查参数是否不匹配具有两个可能值的正则表达式?
Check if parameter does NOT match regex with two possible values?
这是我在我的 bash 脚本之一中尝试做的事情。
如果 SERVER_ENV
不是 PROD
或 TEST
,脚本必须退出。
check-server-env() {
local SERVER_ENV=""
if ! [[ "$SERVER_ENV"^^ =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
我叫script.sh TEST
SERVER_ENV=
check-server-env $SERVER_ENV
这是我的通话方式。而且它不起作用。我做错了什么?
您可以使用:
check-server-env() {
local SERVER_ENV=""
if [[ ! "${SERVER_ENV^^}" =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
但是您可以放弃正则表达式并在 bash
中使用 extglob 匹配:
check-server-env() {
local SERVER_ENV=""
if [[ "${SERVER_ENV^^}" != @(TEST|PROD) ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
为什么要使用正则表达式?
if [ "${SERVER_ENV^^}" != "PROD" ] && [ "${SERVER_ENV^^}" != "TEST" ]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
这是我在我的 bash 脚本之一中尝试做的事情。
如果 SERVER_ENV
不是 PROD
或 TEST
,脚本必须退出。
check-server-env() {
local SERVER_ENV=""
if ! [[ "$SERVER_ENV"^^ =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
我叫script.sh TEST
SERVER_ENV=
check-server-env $SERVER_ENV
这是我的通话方式。而且它不起作用。我做错了什么?
您可以使用:
check-server-env() {
local SERVER_ENV=""
if [[ ! "${SERVER_ENV^^}" =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
但是您可以放弃正则表达式并在 bash
中使用 extglob 匹配:
check-server-env() {
local SERVER_ENV=""
if [[ "${SERVER_ENV^^}" != @(TEST|PROD) ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
为什么要使用正则表达式?
if [ "${SERVER_ENV^^}" != "PROD" ] && [ "${SERVER_ENV^^}" != "TEST" ]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi