Понравилась короткая форма условий в bash
Например:
#!/bin/bash
echo "start"
[ -f $1 ] && echo "ok" || exit 1
echo "working"
В случае ошибки (отсутствия файла) прерываем выполнение скрипта.
Теперь пытаюсь добавить сообщение об ошибке перед выходом из скрипта.
#!/bin/bash
echo "start"
[ -f $1 ] && echo "ok" || echo "error: no file" && exit 1
echo "working"
Сообщения выводятся корректно, в зависимости от существования файла. А вот последнее эхо не срабатывает, следовательно прерывание выполнения скрипта происходит в любом случае. Почему? Вроде всё должно работать, && имеет приоритет перед ||, следовательно "exit 1" вообще не может выполнится без выполнения "echo "error". Где ошибка?