0

'((' で囲まれた単純な算術式は、複合条件式 '[[' 内で true と評価されます。

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 に答える