我希望在一个标志被设置为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 ]];
这并不是我想做的。因此,我的问题是什么是进行此类比较的最佳方法,为什么我期望通过的几个测试用例竟然没有通过?
谢谢!
readonly true=1 yes=1 no=0 false=0
结合使用,以在算术表达式中创建可靠的true
和false
常量。 - Henk Langeveld