1. Если пишешь всё равно кроссплатформенно, то может лучше на /bin/sh вместо bash? Я там явных башизмов-то и не вижу у тебя.
2. Почему бы не называть все переменные внутри скрипта в нижнем регистре? Это их будет отличать от переменных окружения.
3. Если таки хочешь оставить баш, то используй хотя бы local для всех локальных переменных в функциях
4. Есть ли причины использовать псевдоboolean с этими "true" или "false", если есть 1 и 0? :)
5. Советую избегать echo -e
, потому что не кроссплатформенно (echo
по стандарту не умеет в \n и в ключ -e), лучше везде printf
6. Вместо разыменовывания переменных прямо в echo "xxx", читаемее делать это в printf "%s:%s" "$abc" "$cde"
7. ID=$(echo $MAIL_DATA | jq -r ".id"), нет кавычек у MAIL_DATA, может разъебашить
8. printf '%s\n' "$ID ||$FROM ||$SUBJECT" — это лол, может '%s || %s || %s' "${id}"...?
9. Ну вместо cat и временного файла я уже показывал вариант выше
10. EMAIL_ADDRESS="$(get_email_address)" нет смысла в кавычках тут, по стандарту можно без, оно нормально сработает даже если будут пробелы внутри output'а функции