如果一个标志设置为 true 而另一个标志设置为 false,我将尝试运行一段代码。 IE
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
测试0.1
测试0.2
然而,我的期望是我会得到
Test0
Test1
Test3
Test5
Test7
我试图了解运行类似测试的最佳方法,但是我发现的大多数示例都是以以下格式设置的
如果 [[ "$aa" == true ]];
这不完全是我想做的。所以我的问题是进行这样的比较的最佳方法是什么,为什么我希望通过的几个测试用例根本没有通过?
谢谢你!
无需任何操作员,[[
仅检查变量是否为空。如果是,则认为是假的,否则认为是真的。变量的内容并不重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)