Как писать красивые и безопасные bash скрипты

Добавить в начало скрипта:

set -euxo pipefail

Что всё это значит:

set -e

set -e - прекращает выполнение скрипта если команда завершилась ошибкой, выводит в stderr строку с ошибкой. Обойти эту проверку можно добавив в пайплайн к команде true: mycommand | true.

set -u

set -u - прекращает выполнение скрипта, если встретилась несуществующая переменная.

set -x

set -x - выводит выполняемые команды в stdout перед выполненинем.

set -o pipefail

set -o pipefail - прекращает выполнение скрипта, даже если одна из частей пайпа завершилась ошибкой. В этом случае bash-скрипт завершит выполнение, если mycommand вернёт ошибку, не смотря на true в конце пайплайна: mycommand | true.