То, как вы написали свой скрипт, означает, что он выйдет без печати в любой ситуации, НО, если a и b равны.
Немедленно завершите работу, если конвейер (см. Конвейеры), который может состоять из одной простой команды (см. Простые команды), списка (см. Списки) или составной команды (см. Составные команды), возвращает ненулевое состояние. Оболочка не завершает работу, если сбойная команда является частью списка команд, следующих сразу за ключевым словом некоторое время или до, часть теста в операторе if, часть любой команды, выполняемой в && или || список, за исключением команды, следующей за последним символом && или ||, любой команды в конвейере, кроме последней, или если статус возврата команды инвертируется с помощью!. Если составная команда, отличная от подоболочки, возвращает ненулевое состояние из-за сбоя команды, когда -e игнорировалась, оболочка не завершается. Ловушка на ERR, если установлена, выполняется до выхода из оболочки.
Этот параметр применяется к среде оболочки и к каждой среде подоболочки отдельно (см. Среду выполнения команд) и может привести к выходу подоболочек перед выполнением всех команд в подоболочке.
Если составная команда или функция оболочки выполняется в контексте, где -e игнорируется, ни одна из команд, выполняемых в составной команде или теле функции, не будет затронута параметром -e, даже если задан -e и Команда возвращает статус ошибки. Если составная команда или функция оболочки задает -e при выполнении в контексте, где -e игнорируется, этот параметр не будет иметь никакого эффекта до тех пор, пока составная команда или команда, содержащая вызов функции, не завершится.