$ false
$ echo $?
1
$ if [[ false ]]; then echo 'do it'; fi
do it
$ test false && echo 'do it'
do it
$ COND=false
$ echo $COND
false
$ if [[ $COND -ne 0 ]]; then echo 'do it'; fi
$ if [[ $COND -ne true ]]; then echo 'do it'; fi
Это ерунда ИМО, что мне здесь не хватает?
-- Обновить
Итак, вот как это происходит:
$ COND=false
$ if ! $COND; then echo 'do it'; fi
do it
$ if $COND; then echo 'do it'; fi
Но я хочу объединить $COND
с другими условными выражениями в одном большем тестовом выражении (или [[ {expr} && {expr} ]]
). Поэтому, когда $COND
имеет значение false, он не работает внутри [[ {expr} ]]
интуитивно понятным способом. Кажется, [[ {expr} ]]
немного вводит в заблуждение, когда то, что мне нужно, больше похоже на:
$ COND=false
$ if ! $COND && test -d ${HOME}/bin ; then echo 'do it'; fi
do it