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