这是我试图在我的 bash 脚本之一中执行的操作。
如果SERVER_ENV不是PROD或TEST,则脚本必须退出。
check-server-env() {
local SERVER_ENV="$1"
if ! [[ "$SERVER_ENV"^^ =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
Run Code Online (Sandbox Code Playgroud)
我打电话script.sh TEST
SERVER_ENV=$1
check-server-env $SERVER_ENV
Run Code Online (Sandbox Code Playgroud)
这是我打电话的方式。但它不起作用。我究竟做错了什么?
您可以使用:
check-server-env() {
local SERVER_ENV="$1"
if [[ ! "${SERVER_ENV^^}" =~ ^(TEST|PROD)$ ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
Run Code Online (Sandbox Code Playgroud)
但是,您可以放弃正则表达式并使用 extglob 匹配bash:
check-server-env() {
local SERVER_ENV="$1"
if [[ "${SERVER_ENV^^}" != @(TEST|PROD) ]]; then
error "$(highlight "$SERVER_ENV")" " does not exist."
echo "Exiting script..."
echo ""
exit 0
fi
}
Run Code Online (Sandbox Code Playgroud)