shell脚本中的布尔变量
我关注这个帖子 并开发了一个简单的shell脚本shell脚本中的布尔变量,shell,boolean,logical-operators,Shell,Boolean,Logical Operators,我关注这个帖子 并开发了一个简单的shell脚本 #!/bin/sh a=false if [[ $a ]]
#!/bin/sh
a=false
if [[ $a ]];
then
echo "a is true"
else
echo "a is false"
fi
输出是
a is true
怎么了?您需要检查该值是否等于true,而不仅仅是检查变量是否已设置。请尝试以下操作:
if [[ $a = true ]];
您需要检查该值是否等于true,而不仅仅是是否设置了变量。请尝试以下操作:
if [[ $a = true ]];
这不起作用,因为[[仅测试变量是否为空。
你需要写:
if [[ $a = true ]];
而不仅仅是
if [[ $a ]];
这不起作用,因为[[仅测试变量是否为空。
你需要写:
if [[ $a = true ]];
而不仅仅是
if [[ $a ]];
请注意,true和false实际上是bash中的内置命令,因此可以省略条件括号,只需执行以下操作:
if $a;
更新:阅读后,我撤销了这个建议
如果[[$a]]不能像您期望的那样工作,原因是当[[command]除了结束符之外,只接收一个参数时]],如果参数为非空,则返回值为success。显然字符串false不是空字符串。请参阅和注意,true和false实际上是bash中的内置命令,因此您可以省略条件括号,只需执行以下操作:
if $a;
更新:阅读后,我撤销了这个建议
如果[$a]]不能像您预期的那样工作,原因是当[[command]只接收到除结束符之外的单个参数时,如果参数为非空,则返回值为success。很明显,字符串false不是空字符串。请参阅和if[$a]]不是您链接的问题的任何答案中列出的选项之一。如果[$a]]不是您链接的问题的任何答案中列出的选项之一。