Я давно пользуюсь Bash, но, похоже, я все еще что-то упускаю. Пожалуйста, рассмотрите этот код:
function surprise {
true && {
echo 'Expected';
false;
} || {
echo 'Unexpected';
}
}
surprise;
сокращенная демонстрация моей реальной проблемы и вывод:
Expected
Unexpected
До сих пор я думал, что то, что возвращает "ожидаемый" блок, не влияет на ||
перед блоком "Неожиданный", но похоже, что ||
проверяется не на выводе команды true
, а на самом деле команды false
внутри скобок.
Может кто-нибудь объяснить, пожалуйста, что на самом деле только что произошло? Заранее спасибо.