在 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
则会执行。A
B
例如:
$ 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
。这样更清晰,在运行简单命令时很有用。有时一行比三行更清晰,特别是当您试图理解大量代码时。