这是我正在努力做的代码,但我知道它在逻辑上是不正确的,因为!
仅绑定到第一个测试。
# if Vim was compiled in the same month, skip.
if ! [[ -f /usr/local/bin/vim ]] && /usr/local/bin/vim --version | grep "compiled $(date +%b) [0-9]{1,2} $(date +%Y) " -
我知道它在逻辑上是错误的原因是:
$ if ! [[ a == b ]] && [[ c == c ]]; then echo yy; fi
yy
$ if ! [[ a == a ]] && [[ a == c ]]; then echo yy; fi
$
答案 0 :(得分:1)
我认为解决方案是使用curlies:
$ if ! { [[ a == a ]] && [[ a == c ]]; }; then echo yy; fi
yy
我想知道是否有更优雅的东西。
答案 1 :(得分:1)
if [[ a != a ]] || [[ a != c ]]; then echo yy; fi
或:
if ! /usr/local/bin/vim --version 2> /dev/null | grep "compiled ...