我遇到的问题涉及多个IF语句。出于某种原因,即使使用以下设置,脚本也会根据以下代码进行验证:
SSLSite定义为N
SSLOnly未定义
子域名定义为N
if ([[ $SSLSite == y* || $SSLSite == Y* ]] && [[ $SSLOnly == n* || $SSLOnly == N* ]] && [[ $Subdomain == n* ]] || [[ $Subdomain == N* ]])
有什么想法吗?
感谢。
答案 0 :(得分:3)
您的长期情况可以缩短为:
[[ "$SSLSite" == [yY]* && "$SSLOnly" == [nN]* && "$Subdomain" == [nN]* ]]
答案 1 :(得分:2)
要直接回答您的问题,问题是您的最后一个条件:[[ $Subdomain == n* ]] || [[ $Subdomain == N* ]]
。
||
此处未在其他子句中的[[ .. ]]
内分组。这给你
(A || B) && (C || D) && (E) || (F)
你想要的地方
(A || B) && (C || D) && (E || F)
如果单独F
为真,则前一个表达式为真,这就是为什么它在Subdomain=N
你可以通过制作最后一个句子[[ $Subdomain == n* || $Subdomain == N* ]]
来解决它,但显然anubhava的语法更好。