0

这是我试图正确的代码,但我知道它在逻辑上是不正确的,因为!它只绑定到第一个测试。

# 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

$
4

2 回答 2

1
if [[ a != a ]] || [[ a != c ]]; then echo yy; fi

或者:

if ! /usr/local/bin/vim --version 2> /dev/null | grep "compiled ...
于 2013-07-15T08:49:36.397 回答
1

我相信解决方案是使用卷曲:

$ if ! { [[ a == a ]] && [[ a == c ]]; }; then echo yy; fi
yy

我想知道有没有更优雅的东西。

于 2013-07-15T06:48:32.643 回答