#!/bin/bash
declare -a bgpids
cleanup() {
for pid in ${bgpids[@]}; do
kill -9 $pid
done
}
trap "cleanup" SIGINT SIGTERM
sometask &
bgpids+=("$!")
Ваша проблема в том, что вы указали разделитель "EOF"
. Когда разделитель документа здесь -заключен в кавычки, раскрытие параметров в теле не выполняется, поэтому ваш пароль получает буквальное значение "$pass"
. Попробуйте использовать EOF
без кавычек в качестве разделителя.