【问题标题】:Boolean variables in a shell script [duplicate]shell脚本中的布尔变量[重复]
【发布时间】:2017-12-16 22:20:04
【问题描述】:

我关注这个帖子 How to declare and use boolean variables in shell script?

并开发了一个简单的shell脚本

#!/bin/sh                                                                                                                                                                                                   
a=false
if [[ $a ]];
then
    echo "a is true"
else
    echo "a is false"
fi

输出是

a is true

怎么了?

【问题讨论】:

  • if [[ $a ]] 不是您链接的问题的任何答案中列出的选项之一。

标签: shell boolean logical-operators


【解决方案1】:

请注意,truefalse 实际上是 bash 中内置的命令,因此您可以省略条件括号,只需执行以下操作:

if $a; 

更新:阅读this excellent answer后,我撤销了这个建议。


if [[ $a ]] 不像你期望的那样工作的原因是当[[ 命令只接收一个参数时(除了关闭的]]),如果参数是非空的,则返回值是成功.显然字符串“false”不是空字符串。见https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructshttps://www.gnu.org/software/bash/manual/bashref.html#Bash-Conditional-Expressions

【讨论】:

    【解决方案2】:

    这不起作用,因为[[ 只测试变量是否为空。
    你需要写:

    if [[ $a = true ]];
    

    而不仅仅是

    if [[ $a ]];
    

    【讨论】:

      【解决方案3】:

      您需要检查值是否等于true,而不仅仅是变量是否已设置。请尝试以下操作:

      if [[ $a = true ]];
      

      【讨论】:

        猜你喜欢
        • 2011-08-24
        • 2014-08-06
        • 2011-02-26
        • 2021-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多