使用 && 或 || 与 if/elif/else 相比有哪些优缺点?

使用 && 或 || 与 if/elif/else 相比有哪些优缺点?

在 bash 中,我可以利用 && 和/或 || 而不是 if/elif/else 块来制作测试条件。

如果适用,我倾向于使用 && 和/或 ||,而不是构建 if 块。在现实世界中,这两种构造相比有什么优势吗?

请考虑以下示例:

1)

[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"

2)

if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
    echo "the coast is clear"
else
    echo "run the dump"
fi

答案1

您提出的两种形式并不完全相同。

形式为:A && B || C,若或评估为假,C则会执行。AB

例如:

$ true && true || echo C
$ true && false || echo C
C
$

if-then-else这为表单带来了一个实际优势,A && B || C那就是清晰度。if-then-else表单正在做什么更清晰,但您需要了解评估规则才能理解表单A && B || C正在做什么。

但是使用A && B或通常是有益的A || B。这样更清晰,在运行简单命令时很有用。有时一行比三行更清晰,特别是当您试图理解大量代码时。

相关内容