我正在尝试创建一个过滤器,该过滤器应该从数组中排除所有项目,除了那些与子字符串排除模式匹配的项目。
鉴于
myArr=(mySrv-dev-east-prj1 mySrv-dev-west-prj1 mySrv-qa-east-prj2 mySrv-qa-west-prj2 mySrv-uat-prd-east-prj3 mySrv-uat-prd-west-prj3 mySrv-prd-east-prj4 mySrv-prd-west-prj4)
if [[ ${myEnvSelection:l} == 'prod' ]] then
setopt extended_glob
needle_env="prd~uat"
else
needle_env=${myEnvSelection:l}
fi
needle=*${needle_env:l}*${region:l}* # *prd~uat*east*
filtered_result=(${(M)myArr:#$~needle})
unsetopt extended_glob
当我 时,我得到了所有 uat-prd 和 prd 项目 (4) setopt extended_glob
。但如果不设置,则不会返回任何项目。如果我设置,needle=*prd*east*
我将获得east
uat-prd 和 prd 的版本。我也试过了needle=*prd*east*~uat
,它返回了 2 个项目 (uat-prd-east 和 prd-east)。
我知道我误解了如何做这个模式,但我不确定下一步应该尝试什么。