В 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 ответ1

5

Представленные вами две формы не совсем равны.

В форме: 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 Это понятнее и может быть полезно при выполнении простых команд. Иногда одна строка вместо трех более понятна, особенно когда вы пытаетесь получить большой объем кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .