Видел в чужих скриптах такую конструкцию для обработки и оповещении о переменных, которые не были определены:

FIRST="${1:?}"

где знак вопроса ? заставляет bash выкинуть ошибку такого рода, если переменная не была определена:

stderr
./test.sh: line 2: 1: parameter null or not set

Проблема в том, что при использовании такого подхода придется каждую переменную оборачивать в такую констукцию.

My approach

set -u

cuz:

help set
-u  Treat unset variables as an error when substituting.

Как выглядит ошибка:

stderr
./test.sh: line 3: $1: unbound variable