0

包含在 '((' 中的简单算术表达式在复合条件表达式 '[[' 中时计算结果为真

HAVE_SRC=1
[[ (( $HAVE_SRC == 1 )) && -d $( pwd ) ]]
echo $? # returns 0 => true

HAVE_SRC=0
[[ (( $HAVE_SRC == 1 )) && -d $( pwd ) ]]
echo $? # returns 1 => false

HAVE_SRC=1
[[ (( $HAVE_SRC )) && -d $( pwd ) ]]
echo $? # returns 0 => true

问题:

HAVE_SRC=0
[[ (( $HAVE_SRC )) && -d $( pwd ) ]]
echo $? # returns 0 => true ????
4

1 回答 1

4

不要(( ... ))在里面使用[[ ... ]]

(( HAVE_SRC == 1 )) && [[ -d $pwd ]]

要查看 bash 如何解释您给出的表达式,请尝试运行它们

set -xv
于 2013-03-11T17:01:58.390 回答