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