是啥 ||声明变量时的意思[重复]
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 控制运算符: && 表示只有在前面的语句成功执行时才执行后面的语句(返回退出代码零)。 ||表示只有在前面的语句失败时才执行后面的语句(返回非零退出代码)。
【讨论】:
以上是关于是啥 ||声明变量时的意思[重复]的主要内容,如果未能解决你的问题,请参考以下文章