Команда exit
в этом однострочнике выполнится в любом случае:
Ибо это тоже самое, что и:
Если же хочется выполнить exit, если cd завершится с ошибкой, нужно:
Составные команды
Фигурные скобки в последнем выражении используются для определения составных команд (группировки инструкций).
Есть еще что-то подобное с круглыми скобками, но инструкции внутри них выполняются в подоболочке (дочерний процесс). В последнем примере при использовании круглых скобок выход по команде exit произойдет из подоболочки, что не даст желаемого результата.
Завершать составные команды нужно точкой с запятой;
или переводом строки перед закрывающей фигурной скобкой. Естественно, содержимое составных команд должно отделяться от фигурных скобок пробелами.
Еще пару наглядных примеров:
Всё потому, что в bash операторы &&
и ||
имеют одинаковый приоритет и являются левоассоциативными (вычисление выражения слева направо).
Соус: Книга Идиомы Bash → Глава 2. Идиома большого if