使用 && 或 || 的优缺点是什么 与 if/elif/else 对比?

0 linux bash bash-scripting

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

适用时,我倾向于使用 && 和/或 || 而不是构建一个 if 块。一种构造相对于另一种构造是否有任何现实世界的优势?

考虑以下示例:

1)

[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"
Run Code Online (Sandbox Code Playgroud)

2)

if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
    echo "the coast is clear"
else
    echo "run the dump"
fi
Run Code Online (Sandbox Code Playgroud)

cam*_*amh 5

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

在以下形式中:A && B || C,C将在AB评估为假时执行。

例如:

$ true && true || echo C
$ true && false || echo C
C
$
Run Code Online (Sandbox Code Playgroud)

这提供了if-then-else形式相对于A && B || C形式的一个现实优势,那就是清晰度。if-then-else表单在做什么更清楚,但您需要了解评估规则才能了解A && B || C表单在做什么。

然而,使用A && B或常常是有益的A || B。这更清晰,并且在运行简单命令时很有用。有时一行而不是三行更清晰,尤其是当您试图接收大量代码时。

  • IMO 使用 `&& ||` 而不是 `if then else` 最令人困惑的事情是它可以同时运行类似 then 的命令 * 和 * 类似 else 的命令(如果第一个命令成功而第二个命令失败)。你真的不希望一个 `echo` 命令失败,但它可能会发生,如果它真的发生了,它真的会很混乱。正确的“if then else”语句运行“then”命令或“else”命令,*从不*两者。 (4认同)