是啥 ||声明变量时的意思[重复]

Posted

技术标签:

【中文标题】是啥 ||声明变量时的意思[重复]【英文标题】:what does || mean when declaring variables [duplicate]是什么 ||声明变量时的意思[重复] 【发布时间】:2021-09-16 13:50:54 【问题描述】:

大家好,我想知道 ||声明变量时工作?您可以在下面代码的第 3 行中看到这一点。 $output 设置为一个函数,然后 $error 变量设置为 || 之后的前一个命令的退出代码。是什么||这种情况下怎么办/如何处理?

 if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
    log_action_begin_msg "Starting firewall:" "ufw"
    output=`ufw_start` || error="$?"  <-- HERE
    if [ "$error" = "0" ]; then
        log_action_cont_msg "Setting kernel variables ($IPT_SYSCTL)"
    fi
    if [ ! -z "$output" ]; then
        echo "$output" | while read line ; do
            log_action_cont_msg "$line"
        done
    fi
else
    log_action_begin_msg "Skip starting firewall:" "ufw (not enabled)"
fi

【问题讨论】:

【参考方案1】:

一般来说,赋值的退出状态是0。但是当存在命令替换时,退出状态是命令替换的退出状态,在本例中为ufw_start

所以如果ufw_start 失败,它的非零退出状态存储在变量error 中。

另外,由于error仅用于查看其值是否为0,因此可以完全消除。

if output=$(ufw_start); then
    log_action_cont_msg "..."
fi

【讨论】:

啊,好的。那么在命令替换期间会发生什么?该命令是在内部以某种方式执行以获得退出状态,还是只是检查语法没有错误/函数存在? 它被执行:它的输出被分配给output【参考方案2】:

就像 && , ||是一个 bash 控制运算符: && 表示只有在前面的语句成功执行时才执行后面的语句(返回退出代码零)。 ||表示只有在前面的语句失败时才执行后面的语句(返回非零退出代码)。

【讨论】:

以上是关于是啥 ||声明变量时的意思[重复]的主要内容,如果未能解决你的问题,请参考以下文章

声明css样式时,.classA.classB是啥意思(两个类名中间有一个点,没有空格)[重复]

Unreachable Statement是啥意思[重复]

typehint ?string 是啥意思[重复]

内部类的公共构造函数是啥意思[重复]

“编译为”设置为“默认”时的外部符号链接错误[重复]

变量/函数可以声明任意次数,但只能定义一次[重复]