Я пытаюсь запустить блок кода, если для одного флага установлено значение true, а другое - false. то есть
var1=true
var2=false
if [[ $var1 && ! $var2 ]]; then var2="something"; fi
Поскольку это не оценивало то, что я ожидал, я написал несколько других тестовых примеров, и мне сложно понять, как они оцениваются.
aa=true
bb=false
cc="python"
if [[ "$aa" ]]; then echo "Test0" ; fi
if [[ "$bb" ]]; then echo "Test0.1" ; fi
if [[ !"$aa" ]]; then echo "Test0.2" ; fi
if [[ ! "$aa" ]]; then echo "Test0.3" ; fi
if [[ "$aa" && ! "$bb" ]]; then echo "Test1" ; fi
if [[ "$aa" && ! "$aa" ]]; then echo "Test2" ; fi
if [[ "$aa" ]] && ! [[ "$bb" ]]; then echo "test3" ; fi
if [[ "$aa" ]] && ! [[ "$cc" ]]; then echo "test4" ; fi
if [[ $aa && ! $bb ]]; then echo "Test5" ; fi
if [[ $aa && ! $aa ]]; then echo "Test6" ; fi
if [[ $aa ]] && ! [[ $bb ]]; then echo "test7" ; fi
if [[ $aa ]] && ! [[ $cc ]]; then echo "test8" ; fi
Когда я запускаю предыдущий кодовый блок, единственным выходом, который я получаю, является
test0
Test0.1
Test0.2
однако, я ожидаю, что я получу
test0
Test1
Test3
test5
Test7
Я попытался понять лучший способ запуска подобных тестов, однако большинство примеров, которые я нашел, настроены в формате if [[ "$ aa" == true]];
что не совсем то, что я хочу сделать. Итак, мой вопрос - это лучший способ сделать такие сравнения, и почему некоторые из тестовых случаев, которые я ожидал бы просто передать?
Спасибо!